UE4的Global Shader在很久之前的版本就有了,并且底层的渲染管线也是使用Global Shader渲染Light Shaft、Volumetric Fog等等。而且由于版本的更迭,很多设置参数的方式和调用的函数都渐渐改变。虽然旧的一些特性依然使用原来的方式,但新的一些特性如4.24的大气系统都开始使用新的方式。本文记录的就是4.24版本使用较新的方式设置参数,传递参数以及调用函数的方法。

阅读全文 »

UE4中内置了一些着色模型(Shading Model),基本满足了绝大部分游戏开发的需求。但一些特殊美术风格的游戏也许需要自定义着色模型,比如当下火热的二次元向游戏。本文记录了4.22+版本添加自定义着色模型的方法。

阅读全文 »

Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,Uniform是全局的(Global)。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问。第二,无论你把Uniform值设置成什么,Uniform会一直保存它们的数据,直到它们被重置或更新。
UE4的材质编辑器可以调用的红色节点中很多就是Uniform,如ObjectBounds,ActorPosition等等。本文记录了如何在UE4.22或更高版本添加自定义的Uniform,并且生成材质节点在任意材质中调用,该Uniform值也将显示在场景的Skylight组件上供用户修改。

阅读全文 »

UE4材质编辑器中的Custom节点可以写hlsl代码,方便进行一些复杂计算,比如for循环。可以保证材质面板简洁可读性高。UE4之前的版本直接在Custom节点中用#include包含Shaders文件夹下的ush或usf文件,这样可以用外部的代码编辑器编写shader文件。但是最近的版本有所改动,Custom节点无法识别Shaders路径下的文件。所以需要修改工程模块来包含任意路径。

阅读全文 »