zoukankan      html  css  js  c++  java
  • 使用lightProbe来模拟动态物体的照明shader

    VertexLit path中读取lightProbe烘焙信息:

    Shader "VertexLitProbe" {
    Properties {
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}//主贴图
    }
    
    SubShader {
        LOD 100
    
        
        Pass {  
            Tags { "LightMode" = "VertexLit" }
        
            CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                //#pragma target 3.0
                
                #include "UnityCG.cginc"
                #include "Lighting.cginc"
    
                struct appdata_t {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                    float2 texcoord : TEXCOORD0;
                };
                struct v2f {
                    float4 vertex : SV_POSITION;
                    float3 wroldN : TEXCOORD01;
                    half2 texcoord : TEXCOORD0;
                };
    
                float4 _MainTex_ST;
                sampler2D _MainTex;
                
    
                    
                v2f vert (appdata_t v)
                {
                    v2f o;
                    o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                    o.wroldN = mul((float3x3)_Object2World, v.normal);
                    o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                    return o;
                }
                
                fixed4 frag (v2f i) : SV_Target
                {
                    fixed4 mainCol = tex2D(_MainTex, i.texcoord);
                    mainCol.rgb = mainCol.rgb * ShadeSH9(half4(i.wroldN,1.0));
                    return mainCol;
                }
            ENDCG
        }
    }
    
    }

     效果如下图:

    Ps:unity 自带的diffuse(surface shader)中有在forwardBass pass中处理SH9,但是自带的VertexLit(cg)中没有,所以使用自带shader时,只有在forward pass中在能使用LightProbe,但是可以自己写

    ps2:别忘了勾选cube的MeshRenderer组件的 Use Light Probes选项

    可以在surface shader中关闭:

  • 相关阅读:
    java编程继承的第一原则
    Java基本语法总结
    java 语言实现的随机数生成算法
    java实现微公众平台自定义菜单
    使用Java调用谷歌搜索
    Java 语言实现的随机数生成算法
    浅谈Java中的instanceof关键字
    Java 编程基础 类和继承总结
    异常封装提高Java代码质量
    CSS-font
  • 原文地址:https://www.cnblogs.com/wonderKK/p/5051923.html
Copyright © 2011-2022 走看看