zoukankan      html  css  js  c++  java
  • 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"
    }
    顶点着色器
     
  • 相关阅读:
    网站迁移服务器后CPU、内存飙升,设置robots.txt 问题
    System.Web.Mvc 找到的程序集清单定义与程序集引用不匹配
    滑动窗口协议
    TCP拥塞控制
    计网常用协议
    TCP协议中的三次握手、四次挥手
    浏览网页的详细过程
    docker网络模式
    openstack网络
    查找算法
  • 原文地址:https://www.cnblogs.com/shirln/p/8603886.html
Copyright © 2011-2022 走看看