參考:;// 左右翻轉
float2 flipuv =
float2(1
- i.uv.x, i.uv.y)
;fixed4 lightmap =
fixed4(0
,0,0
,0);
fixed4 lightmapl =
tex2d
(_lightmap, i.uv)
;fixed4 lightmapr =
tex2d
(_lightmap, flipuv)
;lightmap = lr >
0? lightmapl : lightmapr
lightmap = lightmap.a > lambert ?
1- _shadowcolor.a :
1col.rgb =
lerp
(_shadowcolor.rgb, col.rgb, lightmap.rgb)
;一開始我是直接用模型的法線來做角度取樣,發現效果並不對。
原因是因為每個點的法線朝向並不一致,導致取樣錯誤
於是我改了每個頂點的朝向
會出現變化過於快的問題
這裡用到了向量投影到平面的演算法
投影公式證明
記得要單位化一下
這樣的話就沒啥問題了。
可能有些錯誤,歡迎各位大佬指出哦,謝謝~~~~?
原來還有專業術語
我也反了。哈哈,改下**就好,果然,美術還是要懂些的,不然你都不知道哪反了。敏感度啊,還好別人指出了
if
(lr >0)
else
if(lightmap.a > lambert)
else
這會對float2 flipuv =
float2(1
- i.uv.x, i.uv.y)
;fixed4 lightmap =
fixed4(0
,0,0
,0);
fixed4 lightmapl =1-
tex2d
(_lightmap, i.uv)
;fixed4 lightmapr =1-
tex2d
(_lightmap, flipuv);if
(lr >0)
else
if(lightmap.a > lambert)
else
col.rgb =
lerp
(_shadowcolor.rgb, col.rgb, lightmap.rgb)
;
遊戲裡的動態陰影 ShadowMap實現原理
shadowmap是比較流行的實時陰影實現方案,原理比較簡單,但真正實現起來還是會遇到很多問題的,我這裡主要記錄下實現方式 先看效果 實現原理 shadowmap技術是從燈光空間用相機渲染一張rendertexture,把深度值寫入其中所以稱之為深度圖,在把接受陰影的物體從模型空間轉換到燈光空間中,...
Python實現原神抽卡的方法
目錄 import random import sys import tkinter as tk 匯入乙個第三方庫,用於製作桌面軟體 import tkinter.font as tf 資料部分 r sr ssr ten count 0 ninety count 0 max count 0 pers...
WebGL 陰影的實現
原理 根據光源與物體之間的距離 也就是物體在光源座標系下的深度z值 來決定物體是否可見。如下圖,同一條光線上有兩個點p1 p2,由於p2的z值大於p1,所以p2在陰影中。需要使用兩對著色器 1 一對著色器用來計算光源到物體的距離 2 另一對根據 1 中計算出的距離繪製場景。2 如何使用 1 中的距離...