• unity之shader


    渲染流程分为三个阶段:应用阶段,几何阶段,光栅化阶段。

    Unity Shader的分类:

    使用的是ShaderLab编写unity中的的shader

    1 表面着色器 Surface Shader

    2 顶点/片元着色器 Vertex/Fragment Shader

    3 固定函数着色器 Fixed Function Shader
     
     
    Shader "Custom/DiffuseShader" {
        Properties {
            _Color ("Color", Color) = (1,1,1,1)       
            。。。
            。。。
        }
        SubShader {
            Tags { "RenderType"="Opaque"}
            CGPROGRAM
            #pragma surface surf Standard fullforwardshadows
            #pragma target 3.0
    
            fixed4 _Color;
            sampler2D _MainTex;
            half _Glossiness;
            half _Metallic;
    
            ENDCG
        }
        FallBack "Diffuse"
    }
    View Code

    Tags 常用两种标签

    ”Opaque”:绝大部分不透明的物体都使用这个; 
    ”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;
    Properties {
            _MyTexture("Texture (RGB)",2D) = "white"{}
            _MyColor("Color of object",Color) =(1,1,1,1)
        SubShader {
            Tags{"Queue"="Geometry""RenderType"="Opaque""IgnoreProjector"="True"}
            Pass {
            CGPROGRAM
            #pragma Vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            sampler2D _MyColor;
    
            struct v2f{
                float4 pos::SV_POSITION;
            };
    
            v2f vert(appdata_full v)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP,v.Vertex);
                return o;
            }
            float4 frag(v2f i)
            {
                return float4(i);
            }
            ENDCG
                }
            }
            FallBack "Diffuse"
    片元着色器
    Shader "Custom/NewShader" {
        Properties {
            _MainTex ("Base (RGB)", 2D) = "white" {}
        }
    
        SubShader {
            Tags { "RenderType"="Opaque" }
            LOD 200
    
            CGPROGRAM
            #pragma surface surf Lambert
    
            sampler2D _MainTex;
    
            struct Input {
                float2 uv_MainTex;
            };
    
            void surf (Input IN, inout SurfaceOutput o) {
                half4 c = tex2D (_MainTex, IN.uv_MainTex);
                o.Albedo = c.rgb;
                o.Alpha = c.a;
            }
            ENDCG
        } 
        FallBack "Diffuse"
    }
    顶点着色器
     
  • 相关阅读:
    把联系人从一张卡转移到另一张卡或者从一个手机转移到另一个手机
    Echarts画折线图
    Echarts画条形图
    Echarts画饼状图
    《计算机网络》读后感
    Vue.js项目无法启动:sh: 1: vue-cli-service: not found
    《Redis入门指南(第 2 版)》读后感
    翻译:《实用的Python编程》InstructorNotes
    翻译:《实用的Python编程》TheEnd
    翻译:《实用的Python编程》09_03_Distribution
  • 原文地址:https://www.cnblogs.com/shirln/p/8603886.html
Copyright © 2020-2023  润新知