shader 體積光影

2021-07-23 20:07:05 字數 2413 閱讀 9589

為了 投影出體積陰影,我們多用乙個pass來渲染網格。

網格延伸的方向是燈光的方向。

我們將頂點轉換到模型空間,然後計算和燈光的角度進行頂點的偏移。

btw:因為根據頂點偏移,所以不能對斷開的頂點進行平滑的過度。

通過點乘插值我們來決定顏色的插值。

該shader不僅可以用來做體積投影,也可以在燈光下做體積光。

_smoothrange("smoothrange",range(0,20)) = 1

_trailcolor("trailcolor",color) = (0,0,0,1)

_trailpower("trailpower",range(0,10)) = 2

_traillength("traillength",range(0,500)) = 100

} subshader

lod 100

pass

cgprogram

#pragma vertex vert

#pragma fragment frag

#pragma multi_compile_fog

#include "unitycg.cginc"

struct a2v

; struct v2f

; uniform float4 _lightcolor0;

//fixed4 _frontcolor;

fixed4 _backcolor;

fixed4 _lightcolor;

sampler2d _maintex;

float4 _maintex_st;

float _smoothrange;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg

} pass

zwrite off

cull off

blend srcalpha oneminussrcalpha

cgprogram

#pragma vertex vert

#pragma fragment frag

#pragma multi_compile_fog

#include "unitycg.cginc"

struct a2v

; struct v2f

; fixed4 _trailcolor;

float _trailpower;

float _traillength;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg

} pass

cgprogram

#pragma vertex vert

#pragma fragment frag

#pragma multi_compile_fog

#include "unitycg.cginc"

struct a2v

; struct v2f

; uniform float4 _lightcolor0;

//fixed4 _frontcolor;

fixed4 _backcolor;

fixed4 _lightcolor;

sampler2d _maintex;

float4 _maintex_st;

float _smoothrange;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg

} pass

zwrite off

cull off

blend srcalpha oneminussrcalpha

cgprogram

#pragma vertex vert

#pragma fragment frag

#pragma multi_compile_fog

#include "unitycg.cginc"

struct a2v

; struct v2f

; fixed4 _trailcolor;

float _trailpower;

float _traillength;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg

} }}

主角場景Shader效果 光影

基本思路 unity有一種很容易實現光影效果的神器,那就是unity自帶的projector。首先需要用到兩張貼圖 一張投影需要的光圈貼圖,如下 一張根據遠近距離顯示暗淡的貼圖 左至右,白漸變黑 如下 主要用到兩個引數 projector 和 projectorclip mul projectorc...

光影切割問題

不少人很愛玩遊戲,例如 cs 遊戲設計也成為程式開發的熱點之一,我們假設要設計破舊倉庫之類的場景作為戰爭遊戲的背景。倉庫的地面會因為陽光從屋頂的漏洞或者視窗照射進來而形成許多光照區域和陰影區域。為了簡單起見,假設不同區域的邊界都是直線 我們把這些直線都叫做 光影線 並且不存在三條光影線相交於一點的情...

福州馬尾琅岐首屆光影藝術節上演光影盛宴

1月26日晚,光臨岐境 福州馬尾琅岐首屆光影藝術節在琅岐紅光湖公園啟幕。王彥 攝 福州1月27日電 許琳晶 繆公尺公尺 超18000平方公尺燈光布景 福州首場公園水幕雷射秀 裸眼3d投影技術 抖音許願神器燈組 26日晚,光臨岐境 福州馬尾琅岐首屆光影藝術節在琅岐紅光湖公園舉辦。當晚,光文化 水文化 ...