基本思路:unity有一種很容易實現光影效果的神器,那就是unity自帶的projector。
首先需要用到兩張貼圖:
一張投影需要的光圈貼圖,如下:
一張根據遠近距離顯示暗淡的貼圖(左至右,白漸變黑),如下:
主要用到兩個引數:_projector 和 _projectorclip
mul(_projectorclip, vertex)://用於計算投影位置和投影器之間的距離
1 shader "xj/modeleffect/projectorlight
"5 _fallofftex ("
falloff
", 2d) = ""
{}6 _intensity ("
intensity
", float) = 1.07}
89subshader
11fog
1213
pass
16colormask rgb
17blend dstcolor one
18 offset -1, -1
1920
cgprogram
21#pragma vertex vert
22#pragma fragment frag
23 #include "
unitycg.cginc"24
25struct
v2f ;
3031
float4x4 _projector;
32float4x4 _projectorclip;
3334
v2f vert (float4 vertex : position)
3544
45fixed4 _color;
46sampler2d _shadowtex;
47sampler2d _fallofftex;
48fixed
_intensity;
4950
fixed4 frag (v2f i) : sv_target
5160
endcg61}
62}63 }
shader 體積光影
為了 投影出體積陰影,我們多用乙個pass來渲染網格。網格延伸的方向是燈光的方向。我們將頂點轉換到模型空間,然後計算和燈光的角度進行頂點的偏移。btw 因為根據頂點偏移,所以不能對斷開的頂點進行平滑的過度。通過點乘插值我們來決定顏色的插值。該shader不僅可以用來做體積投影,也可以在燈光下做體積光...
遊戲中的光影效果
好久沒有更新過博克了,春節的最後一天更新一下,寫一下關於遊戲中關於光影效果的方法,以及我的實現.關於遊戲中的光照,就目前來看大致兩種方式,一種是unreal的與渲染光照貼圖 shadowmap,另一種則是crysis的完全實時光影。效果上都不錯,下面來簡單分析一下。在討論之前先要明確一點,遊戲中的光...
shader 玻璃效果
玻璃效果主要是折射效果的計算和反射效果的計算。折射 1.利用grass pass對當前螢幕的渲染影象進行取樣 2.得到法線貼圖對折射的影響 3.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果 反射 主要利用環境貼圖產生反射的殘影,並和主貼圖取樣結果混合 得到反射和折射的結果後,以乙個...