Unity URP shader之鐳射效果實現

可參考:萬物皆可鐳射,個性吸睛的材質渲染技術

鐳射公式分享如下:

 1 // 此公式來源於:https://zhuanlan.zhihu.com/p/487204843
 2 // HSV -> RGB
 3 half3 HUEToRGB(half h)
 4 {
 5     half3 color;
 6     color.r = abs(h*6-3) - 1;
 7     color.g = 2 - abs(h*6-2);
 8     color.b = 2 - abs(h*6-4);
 9     color = saturate(color);
10     return color;
11 }
12 
13 // HSV -> RGB
14 half3 HSVToRGB(half3 hsv)
15 {
16     half3 rgb = HUEToRGB(hsv.x);
17     half3 color = ((rgb-1)*hsv.y + 1) * hsv.z;
18     return color;
19 }
20 
21 // 計算鐳射顏色
22 half3 CalcLaserColor(half fresnel, half4 param)
23 {
24     half hueValue = fresnel * param.x + param.y;
25     half3 hsvValue = half3(hueValue, param.z, param.w);
26     half3 color = HSVToRGB(hsvValue);
27     color = Pow2(color);
28     return color;
29 }

此公式生成的顏色如上:

 

 

如何在衣服上增加鐳射效果?

調用代碼參考如下:

1 // 鐳射
2 half2 uv_laserNoise = input.uv * _LaserNoiseMap_ST;
3 uv_laserNoise += V.xy * _LaserNoiseSpeed;
4 half4 laserNoiseMap = SAMPLE_TEXTURE2D(_LaserNoiseMap, sampler_LaserNoiseMap, uv_laserNoise);
5 half fresnel = 1 - NoV + laserNoiseMap.r * _LaserNoiseScale;
6 half3 laserColor = CalcLaserColor(fresnel, _LaserParam);

shader面板如下:

 這裏使用了一張noise圖做擾動。

效果如下:

 轉載請註明出處:https://www.cnblogs.com/jietian331/p/17262618.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章