Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:unity:shader

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代码的)
/var/www/DokuWikiStick/dokuwiki/data/pages/软件/unity/shader.txt · Last modified: 2023/05/01 08:38 by zh