multi_compile_fwdadd:为PassType.ForwardAdd编译变体。这将编译变体以处理Directional,Spot或Point Light类型及其变体与Cookie纹理。 multi_compile_fwdadd_fullshadows:同样multi_compile_fwdadd,但也包括灯具有实时阴影的能力。 multi_compile_fog:扩展为多个变体以处理
multi_compile 回到顶部 https://blog.csdn.net/ak47007tiger/article/details/100007655 回到顶部 multi_compile 作用 根据编译选项产生shader变体 避免分支语句导致的性能下降 主要用于在代码中选择shader变体 Unity在打包时会把所有multi_compile产生的shader变体都打进包中 示例shader 1 2 3 4 5 6 7 8 9 10 ...
multi_compile和shader_feature功能很像,最大的区别是对于shader_feature,没有使用的变体不会在构建时包含进去,所以对于shader_feature最好是直接在材质上设置好关键词(选项选好,开关开好),不然可能在运行时设置可能无效,因为对应的shader变体可能没有包含进来,multi_compile则没有这个问题,全局设置也可以。 Properties{...
multi_compile_fwdadd:为PassType.ForwardAdd编译变体。这将编译变体以处理Directional,Spot或Point Light类型及其变体与Cookie纹理。 multi_compile_fwdadd_fullshadows:同样multi_compile_fwdadd,但也包括灯具有实时阴影的能力。 multi_compile_fog:扩展为多个变体以处理不同的雾类型(off / linear / exp / exp2)。
使用本地宏替代一部分全局宏:使用shader_feature_local和multi_compile_local。 shader_feature_local:类似于shader_feature,但枚举宏是本地的。 multi_compile_local:类似于multi_compile,但枚举宏是本地的。 在项目中除非是希望通过全局API启用的那些特定宏,否则应尽量使用本地宏, ...
Unity #pragma multi_compile说明 multi_compile 作用 根据编译选项产生shader变体 避免分支语句导致的性能下降 主要用于在代码中选择shader变体 Unity在打包时会把所有multi_compile产生的shader变体都打进包中 示例shader Shader "DC/Shader/ShaderLab/MultiCompile" { Properties { _MainTex ("Texture", 2D) = "...
在unity中我们可以通过使用#pragma multi_compile或#pragma shader_feature指令来为shader创建多个稍微有点区别的shader变体。这个Shader被称为宏着色器(mega shader)或者超着色器(uber shader)。实现原理:根据不同的情况,使用不同的预处理器指令,来多次编译Shader代码。 在运行时,Unity从Material宏Material.EnableKeyword和...
#pragma fragment frag// make fog work#pragma multi_compile_fog #include"Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"struct appdata{float4 vertex:POSITION;float2 uv:TEXCOORD0;};struct v2f{float2 uv:TEXCOORD0;//UNITY_FOG_COORDS(1)float4 vertex:SV_POSITION;};sampler2D ...
multi_compile_fwdbase可以为相应类型Pass生成需要的Shader变种,这些变种会处理不同条件下的渲染逻辑。总而言之就是可以正确处理不同条件下的各种光源信息。multi_compile_fwdadd也是同理。简要内容可以参考这篇章: https://blog.csdn.net/qq826364410/article/details/81774741 ...
●使用shader_feature替代multi_compile,这样只会收集项目里真正使用的变体组合,避免变体翻倍. ●检查纹理资源的尺寸、格式、压缩方式、mipmap、Read & Write选项使用是否合理. ●检查Mesh资源的Read & Write选项、顶点属性使用是否合理. ●代码级别的检查,如Cache预分配空间、容器的Capacity、GC等. ...