UE4 Developer Shader for C++

Hi guy.i am C++ developer.i want to compile shader with C++,but i don’t kown how to develop.please give me help.thank u.

If you are Chinese (as I guess), read this:

  1. 一般而言你不需要自己撰写shader代码,你可以使用虚幻的材质系统完成大部分材质的设计
  2. 如果你需要完全自定义整个shader,可以参考这个文档:Shader Development | Unreal Engine Documentation
  3. 我没有自定义过Shader,目前唯一的shader自定义需求是用虚幻引擎制作类似卡通材质的东西。

If you are not, please comment and I can give an English version

Hi Thank u reply.我原来写程序的,感觉用虚幻的可视化编程不太习惯,想通过C++的代码进行Shader的实现,我今天下午找到了材质里面有custom这个节点,可以写一些简单的shader语句,但是和我想象中直接通过C++进行编写还是显得有点不足。不过很感谢你,我尝试一下利用C++看可以实现我想要的Shader功能,如果你碰到好的博文的话,分享给我学习一下,多谢你啦 :slight_smile:

其实如果是图形学shader,我觉得虚幻的其实更加直观一些。主要是从调试来说。尤其是现在虚幻采用延迟渲染架构,能够交给Shader发挥的空间不多了。如果你希望自己开发,务必考虑这一点。由于不知道你具体需要完成怎么样的需求。如果是希望自己实现光照算法,那么光照相关的shader应该是在后面而不是直接写在材质的Shader里面

多谢你的回答,我只是想了解一下虚幻的渲染机制,也仅仅是空余时间自己研究一下。平时的项目有BP和C++就已经足够了。

虚幻引擎的渲染机制可以从多角度理解

  1. 虚幻引擎是一个多线程、基于TaskGraph的渲染系统。
  2. 虚幻引擎基于PBR渲染,漫反射模型选用的是Lambert,高光选用的GGX,详细论文可以查看:http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf
  3. 虚幻引擎也是Image-based Lighting,是以四周的图片作为光照基础来着色,具体算法也可以参考前面的论文
  4. 虚幻引擎是一个延迟渲染的引擎,机制可以参考:\Source\Runtime\Renderer\Private\DeferredShadingRenderer.cpp
  5. 虚幻引擎的Shader+Material节点联合编译系统,这个我目前还没有研究,所以没法给出经验:)

非常感谢你的回答,我想这正是我需要的。一些底层方面的知识正是我非常欠缺的。:slight_smile: