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

 

posted @   孤独の巡礼  阅读(757)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示