原文链接:《Shader 学习分享:从 Unity 到 UE4,在 UE4 里用代码写 Shader 指南小合集》 | 作者:冠霖
为了写下一篇 UE4 制作的Shader分享,分享这个小合集,简单几步就可以在 UE4 里开心地用代码写 Shader 啦:
1 Custom 节点的官方文档介绍
- UE4 一般是在 custom 节点中实现代码写 Shader,以下是官方文档介绍
float3 blur = Texture2DSample(Tex, TexSampler, UV);
for (int i = 0; i < r; i++)
{
blur += Texture2DSample(Tex, TexSampler, UV + float2(i * dist, 0));
blur += Texture2DSample(Tex, TexSampler, UV - float2(i * dist, 0));
}
for (int j = 0; j < r; j++)
{
blur += Texture2DSample(Tex, TexSampler, UV + float2(0, j * dist));
blur += Texture2DSample(Tex, TexSampler, UV - float2(0, j * dist));
}
blur /= 2*(2*r)+1;
return blur;
像 Unity 一样写代码:安装或制作链接 Shader 文件的插件
如果不想一直在 custom 节点那个令人窒息的小框里面写代码,而是用 VS Code 这样具有自动补全和高亮的编辑器来舒适写 Shader,你可以:
- 自己写一个简单的插件
- 安装一款免费的插件
- 购买一个 Pro 版本的插件(相比免费插件来说更快支持最新版本 UE4 )
2 写一个简单的插件
- 跟着大佬的这篇文章的开头部分做可以很快地写出一个小插件,文章里到 “RayMarch” 标题之后就是其他内容,暂时还不想了解的同学可以不用看
3 或者安装一款免费的插件 ShaderReader ,或购买 Pro 版本
免费的和 Pro 版本不影响我们使用,但是用最新版本引擎的同学会发现:免费版本有时还没有更新支持最新版本。
- 直接跟着下面这篇教程做:
Thepoly:技术分享 | 通过 VSCode 为 UE4 写 Shader
- VS Code下载链接:
Download Visual Studio Code - Mac, Linux, Windows
4 在 Custom 里写 Shader 跟 Unity Shader 的不同
- 这篇文章写了 Shader 的开头结尾注意事项,和如何利用
struct
结构体来在 Custom 节点里定义函数的技巧:
- 微软官方的 HLSL 指南,有啥看不懂的函数可以去查一下:
DirectX graphics and gaming Direct3D HLSL
5 目前为止遇到的坑
Tex2D
采样函数似乎在 UE 的 Custom 节点里用不了,参考官方论坛发现用以下格式可以:
blur =Tex.Sample(TexSampler, UV);
blur += test.Sample(testSampler, UV);
test
是输入的 2D 纹理变量名,注意后面的testSampler
,前后两个名字要对应相同
即如果你的纹理对象名称是
test
,对应的采样器名称将是testSampler