MaterialInstance 的作用 【UE4】
转载自:http://blog.csdn.net/pizi0475/article/details/50948904
原文格式有些问题,遂整理如下:
我们经常会在游戏中看到Materials,但是还有一种数据结构名字叫做MaterialInstance。其实不少游戏的Mesh指认的都是 MaterialInstance 而不是 Materials,为什么呢?
1. Materials和MaterialInstance都可以指认给Mesh
2. Materials是在游戏运行之前编译好了的,而想要修改Materials的内部参数(比如动态修改其基本色,法线贴图等等)都需要实时 Compilation(Runtime编译),非常耗时,而且对于一种 Material 的修改,会反映到场景中所有使用了它的 Mesh 身上。
3. 但是对 MaterialInstance 修改只会影响一个对象,而且不需要实时编译,不过对MaterialInstance的修改仅仅限制在一些参数上,你想像 MaterialeEditor 一样大幅度修改渲染流程是不行的
4. Material 里所有的Node(参数节点)都能暴露在 MaterialInstance 中,比如基本色在 MaterialInstance 中就是一个 VectorParameterValue,金属参数就是一个ScalarParameterValue
5. 不仅如此,我们可以创建一个基础 Material,然后以他为基础创建多个 MaterialInstance 给不同对象(比如汽车的基础材质创建好,然后仅仅修改颜色,得到多个MaterialInstance,也就是多个不同颜色的汽车),这里的 MaterialInstance 是Constant 的,主要用于相近 Material 的性能优化
6
-
//0代表get的MaterialInstance的index,因为不少Mesh有多个Material在身上
-
MatDynamic = MeshComp->CreateAndSetMaterialInstanceDynamic(0);
-
MatDynamic->SetScalarParameterValue(ParameterFName, ParameterValue);
( VectorParameterValue 就是四个 float 变量)
其他资料: http://blog.csdn.net/sinat_27456831/article/details/50781397
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/60963323
- 点赞
- 收藏
- 关注作者
评论(0)