Unity图形学中的ShaderLab怎么入门(shaderlab,unity,开发技术)

时间:2024-04-28 16:45:29 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1.格式

Shader"Custom/MyShader" //命名+右键创建shader路径{ //属性必须在代码里声明才能使用Properties{ //属性,会出现在inspector面板_MainTex("MainTex",2D)="white"{} //名称("面板显示名称",数据类型)=初始化}//针对不同显卡可以有不同subshader,对应不同品质的渲染SubShader{ Tags{"LightMode"="ForwardBase"} //tags,定义渲染的设置ZWriteOff //RenderSetup,渲染设置Pass{ //通道pass,一个subshader可以有多个pass Name="MyPass" //pass可以命名,在其他subshader引用UsePass大写CGPROGRAM //开始CG代码-和ENDCG成对 #pragmavertexvert //定义渲染函数,顶点 #pragmafragmentfrag //片元 #pragmasurfacesurfLambert //表面 #include"Lighting.cginc" //包含方法库sample2D_MainTex; //声明变量float4_MainTex_ST; structa2v //自定义结构体 { float4vertex:POSITION; //变量类型变量名:语义说明(语言规定) float3normal:NORMAL; }v2fvert(appdatav) //函数体{ v2fo;returno;} ENDCG}}SubShader{...} FallBack"Diffuse" //以上subshader显卡都不支持,默认返回漫反射}

uniform修饰词;

Name = "MyPass"

——UsePass "Unlit/Outline/MYPASS"//必须大写

——GrapPass//抓取屏幕结果存储在一张纹理中

2.属性

Unity图形学中的ShaderLab怎么入门

属性对应的变量类型,声明变量使用;属性中类型和变量中类型不一定一致;

Unity图形学中的ShaderLab怎么入门

3.语义

SV_开头表示System-Value——系统定义的语义变量;

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

4.Tags

1)SubShader可用

Queue——渲染队列

Unity图形学中的ShaderLab怎么入门

RenderType——渲染类型

(1)”Opaque”:绝大部分不透明的物体都使用这个;
(2)”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;
(3)”Background”:天空盒都使用这个;
(4)”Overlay”:GUI、镜头光晕都使用这个;
(5)还有其他可参考Rendering with Replaced Shaders;用户也可以定义任意自己的RenderType字符串;
(6)”TransparentCutout“:透明测试使用;

IgnoreProjector = “True”——忽略投影器影响,AlphaTest和AlphaBlend使用;

ForceNoShadowCasting = “True”——表示不接受阴影;

2)Pass可用

"LightMode"="ForwardBase"

Unity图形学中的ShaderLab怎么入门

5.RenderSetup

1)Cull剔除

Cull Front/Back/Off

2)深度测试和写入

ZWrite Off

ZTest Off

3)Blend——透明混合设置

BlendOp

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Blend效果

Unity图形学中的ShaderLab怎么入门

6.方法

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

UnityCG.cginc常用结构体

Unity图形学中的ShaderLab怎么入门

Unity图形学中的ShaderLab怎么入门

书写建议:
1.移动平台的shader尽可能使用精度低的变量:fixed-half-float

2.错误:片元中大量计算导致寄存器不足——提高shaderTarget等级

3.尽量不要使用分支语句

4.不要除以0

Life is too short for so much sorrow.  

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Unity图形学中的ShaderLab怎么入门的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C#异步多线程使用中的常见问题有哪些下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18