Unity Shader学习笔记(一) shader的基础结构

来源:互联网 发布:linux 限制访问目录 编辑:程序博客网 时间:2024/04/16 18:46
     
Shader "Unlit/Shader_1"  //shader 路径{Properties          //在这里写的东西都会呈现在Unity检视面板中,可在外部调节  格式:_Name("显示名称",Type) = defaultValue{_MainTex ("Texture", 2D) = "white" {}}//一个Shader中可以有多个SubShader ,但是unity会选择第一个可以在相应显卡执行的SubShader来执行,其后面的就会跳过//渲染状态设置  CullBack  背部剔除 当背部面向摄像机的时候就不会显示//Cull Front  前面剔除 当正面面向摄像机的时候就不会显示//Cull Off    剔除关闭 关闭剔除功能//Ztest Less Greater/LEqual/GEqual/Equal/Always   根据像素在Z轴上的位置来进行处理//Zwrite On/Off   摄像机近处物体遮挡远处物体SubShader{//设置标签//Queue                    渲染顺序指定//RenderType               着色器分类//DisableBatching          批处理开关   //ForceNoShadowCasting     阴影投射//IgnoreProjector          用于半透明物体不受投射//CanUseSpriteAtlas        用于2D精灵//PreviewType              Untiy预览用模型Tags { "RenderType"="Opaque" }LOD 100//SubShader中可能有多个Pass,但每个Pass会依次被执行//也可以调用其他Shader中的Pass  用法:UsePass"MyShader/MYPASS"  调用的pass名必须大写//Pass中的Tags  LightMode    指定Unity中的渲染途径   //              RequireOptions  渲染这个Pass需要的条件,如果条件不够则不被渲染Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;v2f vert (appdata v){v2f o;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{// sample the texturefixed4 col = tex2D(_MainTex, i.uv);// apply fogUNITY_APPLY_FOG(i.fogCoord, col);return col;}ENDCG}}//FallBack是本shader 中的内容不被支持时,选用那种低级的Shader替换   FallBack“ShaderName”}

https://onevcat.com/2013/07/shader-tutorial-1/

0 0
原创粉丝点击