真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ShaderLab學習小結(十)簡單的支持光照貼圖的shad-創(chuàng)新互聯(lián)

場景中建一個plane,一個cube一個cylinder
把場景平行光的強度調低一些,再加一個點光源,設置為綠色吧,俗話說的好:愛是一道光,綠到你發(fā)荒……
把點光源的shadowtype設置為hard shadow(默認的是無陰影)
ShaderLab學習小結(十)簡單的支持光照貼圖的shad
如上圖,平行光和點光源都產(chǎn)生了陰影。

成都創(chuàng)新互聯(lián)是專業(yè)的肥東網(wǎng)站建設公司,肥東接單;提供網(wǎng)站建設、成都網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行肥東網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

要烘焙lightmap,就要把被烘物體設置上lightmap static
ShaderLab學習小結(十)簡單的支持光照貼圖的shad
平行光和點光源都把Baking設置為Baked
ShaderLab學習小結(十)簡單的支持光照貼圖的shad
在lighting面板中,把Ambient GI選成Baked
烘出來感覺暗一些,稍微把General GI里的indirect Intensity調高一些到1.5(這個不為追求什么效果)
把底下的auto前面的勾選取消掉,再點擊Build
ShaderLab學習小結(十)簡單的支持光照貼圖的shad
然后烘出來,可以把燈光關了
ShaderLab學習小結(十)簡單的支持光照貼圖的shad
物體的光照還有陰影還在
ShaderLab學習小結(十)簡單的支持光照貼圖的shad

Shader代碼:

Shader "Custom/TestLightMapShader" {
    Properties{
        _MainTex("Main Tex",2d) = ""{}
    }
    SubShader {
        pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "unitycg.cginc"
            sampler2D _MainTex;
            float4 _MainTex_ST;
            struct v2f {
                float4 pos:POSITION;
                float2 uv0:TEXCOORD0;
                float2 uv1:TEXCOORD1;
            };
            v2f vert(appdata_full v)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                o.uv0 = TRANSFORM_TEX(v.texcoord, _MainTex);
                o.uv1 = v.texcoord1.xy*unity_LightmapST.xy + unity_LightmapST.zw;
                return o;
            }
            fixed4 frag(v2f IN) :COLOR
            {
                fixed4 col = tex2D(_MainTex,IN.uv0);
                float3 lm = DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, IN.uv1));
                col.rgb *= lm*2;
                return col;
            }
            ENDCG
        }
    }
    FallBack "Diffuse"
}

定義了一個_MainTex,這里并沒有賦紋理,為了和光照貼圖有區(qū)別
結構體里定義:uv0與uv1
uv1對應的是光照貼圖的處理

o.uv1 = v.texcoord1.xy*unity_LightmapST.xy + unity_LightmapST.zw;

看這個公式和unitycg.cginc里的TRANSFORM_TEX的定義好像是一樣的

// Transforms 2D UV by scale/bias property
#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)

為什么不用TRANSFORM_TEX呢
這個unity_Lightmap和unity_LightmapST是內建的直接用
但是注意,unity_Lightmap與ST之間并無下劃線,這個和TRANSFORM_TEX定義的不一樣,所以得這樣寫
這里用到了v.texcoord1,查看unitycg.cginc,發(fā)現(xiàn)vert的參數(shù)得用appdata_full
v.texcoord對應主紋理,v.texcoord1對應的是光照貼圖(就這樣理解吧)

然后到frag函數(shù)中

fixed4 col = tex2D(_MainTex,IN.uv0);
float3 lm = DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, IN.uv1));
col.rgb *= lm*2;
return col;

tex2D主紋理采樣 沒變
之后對lightmap貼圖進行采樣

float3 lm = DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, IN.uv1));

這個在unitycg.cginc中定義,返回值是個half3

inline half3 DecodeLightmap( fixed4 color, half4 decodeInstructions)
{
#if defined(UNITY_NO_RGBM)
    return DecodeLightmapDoubleLDR( color );
#else
    return DecodeLightmapRGBM( color, decodeInstructions );
#endif
}

再與主顏色的rgb疊加

col.rgb *= lm*2;

這里lm*2是因為太暗,所以增加亮度
當然,從圖上能看出來,lightmap與實時渲染的效果是不一樣的,這個就需要調整了,本文不涉及。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享名稱:ShaderLab學習小結(十)簡單的支持光照貼圖的shad-創(chuàng)新互聯(lián)
當前路徑:http://weahome.cn/article/hhjci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部