光照
[外链图片转存失败(img-L4iWhvNF-1564577945478)(C:\Users\洛嘉领道\AppData\Roaming\Typora\typora-user-images\1563175490085.png)]
混合状态
混合等式
C=Csrc⊗Fsrc⊞Cdst⊗Fdst
混合运算符⊞
各个种类:枚举类型D3D11_BLEND_OP
混合因子F
各个种类:枚举类型D3D11_BLEND
ID3D11Device::CreateBlendState方法–创建混合状态
ID3D11DeviceContext::OMSetBlendState方法–输出合并阶段设置混合状态
深度/模板测试
模板测试→深度测试→混合操作
深度/模板缓冲区是一个2D数组(纹理)
深度测试
现在有一个像素片元,已知它的深度值,然后需要跟深度缓冲区中的深度值进行比较,若小于深度缓冲区的深度值,则该像素片元将会覆盖后备缓冲区原来的像素片元,并更新深度缓冲区中对应位置的深度值。
模板测试
除了深度测试以外,我们还可以设定模板测试来阻挡某些特定的区域的像素通过后备缓冲区。而且模板测试在操作上自由度会比深度测试大。
(StencilRef & StencilReadMask) ⊴ (Value & StencilReadMask)
ID3D11DeviceContext::ClearDepthStencilView方法–深度/模板缓冲区内容清空
ID3D11Device::CreateDepthStencilState方法–创建深度/模板状态
符号⊴ 的各个种类:枚举类型D3D11_COMPARISON_FUNC
对目标模板值操作的各个种类:枚举类型D3D11_STENCIL_OP
ID3D11DeviceContext::OMSetDepthStencilState方法–输出合并阶段设置深度/模板状态
硬件实例化/视锥体裁剪
Collision::FrustumCulling1or2or3() 返回值作为DrawInstanced的第三个参数
7月16日
重温渲染管线
输入装配 <
顶点着色器(VS) <
外壳着色器(HS) <
曲面细分 <
域着色器(DS) < GPU资源:
几何着色器(GS) < 缓冲区、纹理
> 流输出 >
光栅化 <
像素着色器(PS) <
输出合并 < >
几何着色器
几何着色器是我们在将顶点送入光栅化阶段之前,可以操作顶点的最后一个阶段
几何着色器可以做:
- 让程序自动决定如何在渲染管线中插入/移除几何体;
- 通过流输出阶段将顶点信息再次传递到顶点缓冲区;
- 改变图元类型(如输入点图元,输出三角形图元);
流输出状态
得到几何着色器输出的顶点,进行更多操作(例如高阶分形)
配置
ID3D11DeviceContext::SOSetTargets方法–绑定流输出对应用于接收数据的顶点缓冲区
ID3D11DeviceContext::SOGetTargets方法–获取绑定在流输出阶段的顶点缓冲区
ID3D11Device::CreateGeometryShaderWithStreamOutput方法–创建带流输出阶段的几何着色器
法线贴图
法线贴图是指纹理中实际存放的元素通常是经过压缩后的法向量,用于表现一个表面凹凸不平的特性,它是凹凸贴图的一种实现方式。