原神面部陰影的實現 大概

2021-10-10 14:08:03 字數 2711 閱讀 1042

參考:

;// 左右翻轉

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 中的距離...