zoukankan      html  css  js  c++  java
  • Unity Shader基础

    在Unity中任何Shader都可以通过下方的这个模板进行扩展。


    Shader "Custom/BasicShader"{
    
        Properties{
            //_Color: 内部需要注册的参数
            //Base Color: 给外部提供的接口名称
            //Color: 类型
            //等号右边表示该类型下的改参数默认值
            _Color("Base Color", Color) = (1,0,1,1)
            _MainTex("Base(RGB)", 2D) = "white"{}
        }
    
    
        //一个Shader至少要有一个SubShader
        SubShader{
            
            //全局标签,可选
            Tags{
                "Queue" = "Transparent"
                "RenderType" = "Transparent"
                "IgnoreProjector" = "True"
            }
    
            //全局渲染设置,可选
            Blend SrcAlpha OneMinusSrcAlpha
    
    
            //一个SubShader至少有一个Pass
            Pass{
                //名称
                Name "Simple"
    
                //本Pass中使用的渲染设置
                Cull off
    
                //撰写CG/HLSL开始标头;如果是GLSL时改成 GLSLPROGRAM
                CGPROGRAM
                //需要使用的参数及其简写
                #pragma vertex vert
                #pragma fragment frag
                //使用到的库
                #include "UnityCG.cginc"
    
                //使用内部参数名及对应变量类型注册对外提供的接口参数
                float4 _Color;
                sampler2D _MainTex;
    
                //自定义结构体
                struct v2f{
                    float4 pos : POSITION;
                    float4 uv : TEXCOORD0;
                };
    
                //对需要使用的CG/HLSL参数vertex进行实现
                v2f vert(appdata_base v){
                    v2f o;
    
                    o.pos = UnityObjectToClipPos(v.vertex); // Change the axis from itself to the world space
                    o.uv = v.texcoord;
    
                    return o;
                }
    
                //对需要使用的CG/HLSL参数fragment进行实现
                half4 frag(v2f i) : COLOR{
                    half4 color = tex2D(_MainTex, i.uv.xy) * _Color;
                    return color;
                }
                
    
                //撰写CG/HLSL完毕标头;如果是GLSL时改成 ENDGLSL
                ENDCG
    
            }
        }
    
        //默认在任何一个SubShader都不起作用的时候执行
        FallBack "DIFFUSE"
    }
    
  • 相关阅读:
    正则表达式大全
    函数基础(二)
    函数基础(一)
    bzoj3531 [Sdoi2014]旅行
    bzoj4785 [Zjoi2017]树状数组
    bzoj4568 [Scoi2016]幸运数字
    bzoj1975 [Sdoi2010]魔法猪学院
    bzoj1079 [SCOI2008]着色方案
    bzoj1996 [Hnoi2010]chorus 合唱队
    bzoj2326 [HNOI2011]数学作业
  • 原文地址:https://www.cnblogs.com/ezhar/p/13755442.html
Copyright © 2011-2022 走看看