博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Directx11教程(18) D3D11管线(7)
阅读量:6939 次
发布时间:2019-06-27

本文共 836 字,大约阅读时间需要 2 分钟。

光栅化阶段(RS)之后,将进入PS/OM阶段。

参考外文资料:

大致的管线流程应该是这样的:

      RS光栅化的fragment达到64或者32(一个wave或者warp)后,PS调度模块会产生一个新的wave或者warp,并把它们传给PS shader阶段,PS shader得到调度信息后,会从video memory中取得PS code,执行shader 代码。注意和vs过程类似,ps过程中,也是每个stream core处理一个fragment。

    

     我们的ps shader代码非常简单,只是单纯的输出颜色值,但要注意的一点是,在ps shader时候,gpu会自动做一件事情,就是属性差值,比如我们的三角形,我们只输入了三个顶点的颜色,但经过光栅化后,我们有很多fragment,系统会自动根据顶点颜色给各个fragment差值出颜色[经常的做法是双线性插值]。

    PS shader中还可以执行纹理贴图,还有一些depth cull(这时,early z将会失效)或者颜色blend的功能,后面教程我们学到这些时候,可以再回来讨论D3D11管线。

     我们的ps shader代码如下:

struct PixelInputType

{
    float4 position : SV_POSITION;
    float4 color : COLOR;
};

float4 ColorPixelShader(PixelInputType input) : SV_TARGET
{
    return input.color;
}

    PS的输出会放在一个FIFO的buffer中,该buffer中内容会和depth block进行通信,之后经过深度测试和模版测试的fragment最终被传输到color block,再执行颜色alpha混合或者其它一些功能后,最终被传到video memory中Framebuffer,然后在屏幕上显示出来。这个过程就是D3D11管线中的MO(合并输出)阶段。

转载地址:http://oqinl.baihongyu.com/

你可能感兴趣的文章
CRUD
查看>>
Unity3D性能优化--- 收集整理的一堆
查看>>
数据库基础
查看>>
数组函数
查看>>
基础概要
查看>>
转-架构高性能网站秘笈(三)——浏览器缓存
查看>>
[SDOI2009][BZOJ 1876]SuperGCD
查看>>
TweenMax动画库学习(六)
查看>>
VueConf 全球首届Vue.js开发者大会资料整理
查看>>
多态 向上,向下转型
查看>>
Linux进程间通信——使用信号量
查看>>
C语言中带有返回类型的函数没有return语句的影响
查看>>
学习笔记之XML
查看>>
高性能js之js文件的加载与解析
查看>>
扭转二次大战战局的关键:雷达英雄传奇
查看>>
类的封装性和信息隐蔽[转 非原创]
查看>>
程序员所具备的素质[转]
查看>>
MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式
查看>>
Address already in use的解决方法
查看>>
微信接口
查看>>