diff --git a/03-UnrealEngine/Rendering/RenderingPipeline/Materials/MeshDraw.md b/03-UnrealEngine/Rendering/RenderingPipeline/Materials/MeshDraw.md index dde8d57..c207db8 100644 --- a/03-UnrealEngine/Rendering/RenderingPipeline/Materials/MeshDraw.md +++ b/03-UnrealEngine/Rendering/RenderingPipeline/Materials/MeshDraw.md @@ -94,7 +94,7 @@ enum EColorWriteMask }; ``` -### 混合运算 +#### 混合运算 混合运算符对于颜色混合方程和Alpha混合方程效果是一样的,这里就只用颜色混合方程来做讲解。 | BlendOperation | 颜色混合方程 | @@ -106,7 +106,7 @@ enum EColorWriteMask | BO_Max | $$C = Max(C_{src} , C_{dst} )C=Max(Csrc​,Cdst​)$$ | | BO_Min和BO_Max忽略了混合因子 | | -### 混合因子 +#### 混合因子 | BlendFactor | 颜色混合因子 | Alpha混合因子 | | ----------------------------- | ---------------------------------------------------------------- | ------------------------ | @@ -134,10 +134,10 @@ TStaticDepthStencilState< bEnableDepthWrite, // 是否启用深度写入 DepthTest, // 深度测试比较函数 bEnableFrontFaceStencil, // (正面)启用模板 - FrontFaceStencilTest, // (正面)模板失败操作 + FrontFaceStencilTest, // (正面)模板测试操作 FrontFaceStencilFailStencilOp, //(正面)模板测试失败时如何更新模板缓冲区 FrontFaceDepthFailStencilOp, //(正面)深度测试失败时如何更新模板缓冲区 - FrontFacePassStencilOp, //(正面)通过模板测试时如何更新模板红冲去 + FrontFacePassStencilOp, //(正面)通过模板测试时如何更新模板缓冲区 bEnableBackFaceStencil, // (背面)启用模板 BackFaceStencilTest, // (背面)模板失败操作 BackFaceStencilFailStencilOp, //(背面)模板测试失败时如何更新模板缓冲区 @@ -148,6 +148,13 @@ TStaticDepthStencilState< > ``` +```c++ +//一般使用这个 +TStaticDepthStencilState::GetRHI(); +//CustomStencil中使用的 +TStaticDepthStencilState::GetRHI() +``` + #### DepthTest 深度测试比较函数。 ```c++ @@ -173,6 +180,23 @@ enum ECompareFunction }; ``` +```c++ +enum EStencilOp +{ + SO_Keep, + SO_Zero, + SO_Replace, + SO_SaturatedIncrement, + SO_SaturatedDecrement, + SO_Invert, + SO_Increment, + SO_Decrement, + + EStencilOp_Num, + EStencilOp_NumBits = 3, +}; +``` + ### CustomStencil #### InitCustomDepthStencilContext() 根据当前平台是否支持使用ComputeShader直接输出结果(bComputeExport)、以及是否写入Stencil缓存,以此来创建不同的资源。最终输出FCustomDepthContext。