技术美术吧 关注:251贴子:433
  • 2回复贴,共1

【技术美术】【day64】复杂着色器技术:变体

只看楼主收藏回复

正常渲染代码段+效果段
各个shader的正常渲染部分是重复的
美术同学自由切换效果
Uber Shader
在一个Shader 实现自由切换效果的
3种方法:
1.静态分支 ======》#if
2.动态分支 =======> if
3.着色器变体 =============>#pragma
-------------------------------------------------------------------------------
如何选择???????????????????????
三种用法的方法概念:
1。编译时
#define
#if defined
只能手写,shader graph不行
只会编译一个分支到源文件
裁剪没有编译的分支
--------------------------------------------------------------------------------
2. 运行时
shader graph =>branch节点
不会造成代码膨胀
产生计算开销
---------------------------------------------------------------------------------
3.空间换时间
静态分支的加强
编译时 生成多个静态分支的着色器版本
手写的
Shader Variants
Shader KeyWords
Shader Graph 连连看的
Shader states
keyword node


IP属地:江苏1楼2023-11-29 09:32回复
    Uber shader / mega shader
    包括了所有的效果
    标准着色器也用到了变体
    不会运行时性能损失
    占用构建时间
    占用文件体积
    内存
    加载时间
    ---------------------------------
    变体类型
    1.multi_compile
    2.Shader_feature
    区别 如何选择????????????????????????


    IP属地:江苏2楼2023-11-29 09:35
    回复
      1.shader 代码中使用变体
      变体组合
      变体使用
      [Toggle]Light("LIGHT")
      #pragma multi_compile LIGHT_OFF LIGHT_ON
      #if defined(LIGHT_ON)
      ----------------------------------------------------------------


      IP属地:江苏3楼2023-11-29 10:30
      回复