Skip to content

Commit 050bc2f

Browse files
committed
update material code generation
1 parent c6186fb commit 050bc2f

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed
406 KB
Loading

8.misc/ue4_hlsl_programming.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ UE4 Shader编程
2626
* ShaderResource绑定
2727
* Shader各平台编译
2828

29-
## Uniform声明
29+
## C++代码中Uniform声明
3030

3131
```cpp
3232
BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT(FClusterCullCommonParameters,)
@@ -47,10 +47,36 @@ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT(FClusterCullCommonParameters, "CullComm
4747
//SetUniformBufferParameter
4848
```
4949
50+
## 材质的Uniform声明(数据驱动的方式)
51+
52+
通过**FUniformExpressionSet**缓存的UniformExpression生成对应`CBuffer`和`Resources Declaration`
53+
5054
![](images/material_shader_param.png)
5155
56+
![](images/shader_param_declaration.png)
57+
58+
当然前面也需要UniformBuffer的填充(主要针对**Constants**)
59+
60+
![](images/material_filluniform.png)
61+
62+
63+
## UE4材质编辑器如何从节点编辑器到最终的Shader?
64+
65+
* 先看`HLSLMaterialTranslator`
66+
![](images/material_code_chunks.png)
67+
* 翻译**贴图采样**
68+
![](images/material_texture_param_translate.png)
69+
70+
* 最终Material Shader的组装
71+
![](images/material_shader_uniform_assemble.png)
72+
73+
* 运行时Shader动态Uniform参数的**更新**
74+
![](images/material_shader_uniform_buffer_update.png)
75+
5276
## Uniform绑定
5377
78+
![](images/set_uav_from_uniform_buffer.png)
79+
5480
```cpp
5581
5682
```

0 commit comments

Comments
 (0)