【转载】Shader 学习分享:从 Unity 到 UE4,在 UE4 里用代码写 Shader 指南小合集

781 阅读1分钟

原文链接:《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,你可以:

  1. 自己写一个简单的插件
  2. 安装一款免费的插件
  3. 购买一个 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 节点里定义函数的技巧:

窝窝头:UE4 HLSL 和 Shader 开发指南和技巧

  • 微软官方的 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

image.png

Undeclared identifier ‘TexSampler’