日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4.边缘光照的描边shader

發布時間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4.边缘光照的描边shader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【思路】:面向攝像機的物體,它的表面法線【normal】和視角向量【viewDir】的【夾角】越靠近邊緣就越大。那么就可以根據這個夾角進行處理,夾角越大,那么發射光越強,就可以實現我們想要的效果。


Shader "Study/4_OutLine" {Properties{_MainTex("Base (RGB)", 2D) = "white" {}_BumpMap("Bumpmap", 2D) = "bump" {}_RimColor("Rim Color", Color) = (0.26,0.19, 0.13, 0.0)_RimPower("Rim Power", Range(0.5, 8.0)) = 3.0}SubShader{Tags{ "RenderType" = "Opaque" }LOD 200CGPROGRAM#pragma surface surf Lambertsampler2D _MainTex;sampler2D _BumpMap;float4 _RimColor;float _RimPower;struct Input{float2 uv_MainTex;float2 uv_BumpMap;float3 viewDir;};void surf(Input IN, inout SurfaceOutput o){half4 c = tex2D(_MainTex, IN.uv_MainTex);o.Albedo = c.rgb;o.Alpha = c.a;//獲取法線值【UnpackNormal是unity自帶的標準解壓法線用的】o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));// viewDir點到相機的向量歸一 與 該點的法線 求點乘。得出余弦值【0-1】,如果兩條線平行方向一樣值1,相反-1,垂直0// 所以越靠近越靠近邊緣,值越小,saturate相當于mathf.clamp(value,0,1)// 如果1-這個值,越靠近邊緣,rim值越大,自發光就越強half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));// pow是求冪函數,所以rim越大,效果越明顯o.Emission = _RimColor.rgb * pow(rim, _RimPower);}ENDCG}FallBack "Diffuse" }


工程地址:http://download.csdn.net/detail/yinfourever/9566913

總結

以上是生活随笔為你收集整理的4.边缘光照的描边shader的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。