Table of Contents

Unity Shader

关于Shader,可以去复习《Unity Shader入门精要 冯乐乐》这本书的读书笔记。

Unity Shader里面会使用其他的Shader语言来表达真正的着色逻辑,比如Cg或者HLSL

而除了真正的、描述着色算法的Shader代码外,Unity Shader中还会描述一些其他需要使用的内容。ShaderLab是用来描述Unity Shader的描述性语言,是ShaderLab将不同的内容整合起来,组成完整的Unity Shader。


理解

Unity Unreal 我的理解
Unity Shader Unreal Material 这一层都是运行在GPU上的代码
Unity Material Unreal Material Instance 暴露的参数配置层

Unity Shader/Shader Graph/Unreal Material 最终都会编译成Shader代码(真正在GPU上运行的算法)。Unity和Unreal一样,是可以支持查看,编译得到的真正的Shader代码的。根据不同的目标平台,编译得到的最终代码也可能是不同的。

基础语法

一个Unity Shader的大致结构

 

逻辑交互

参数传递

C#向Shader传递参数的API类似这种:

  1. Material.SetXXX()
  2. Shader.SetGlobalXXX()

外链资料

  1. Unity-Shader-Basics-Tutorial https://github.com/Centribo/Unity-Shader-Basics-Tutorial (写的比较基础全面)
  2. Unity Shader 基础教程 https://blog.csdn.net/JianZuoGuang/article/details/80471598 (上面一篇文章的翻译)
  3. Unity Shader CGPROGRAM下的代码组织 https://www.cnblogs.com/Li-F/p/10806798.html (主要是将CG代码的)