首页 > 其他分享 >Unity URP shader之镭射效果实现

Unity URP shader之镭射效果实现

时间:2023-03-27 19:44:56浏览次数:48  
标签:镭射 color fresnel shader param half3 Unity half

可参考:万物皆可镭射,个性吸睛的材质渲染技术

镭射公式分享如下:

 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

 

标签:镭射,color,fresnel,shader,param,half3,Unity,half
From: https://www.cnblogs.com/jietian331/p/17262618.html

相关文章

  • Revit 机电模型导入 Unity (二)
    解决思路通过Revit导出FBX格式不同过滤器的机电模型并拿到各个不同过滤器的颜色设置将FBX格式机电模型统一到Unity当中,设置材质、修改构件为ID解决步骤此篇文件先完......
  • Unity的LayoutGroup刷新会延迟一帧的问题
    在去年遇到过LayoutGroup完全不刷新的问题:https://www.cnblogs.com/strawberryPudding/p/15593869.html当时的解决方案是关了之后等一帧再开,但是也有一些问题。在时不时需......
  • 某些网上以及书籍中关于首次使用灰度shader出错时需要注意的点
    最近因为毕业设计,刚刚入门shader,找了本cocos2d-x的书看关于在cocos中运用shader的部分,网上也有人照着本书做相应的博客,但是使用他们的代码都会出现错误。书上的代码:......
  • Unity Shader 实现 Lambert Phong BlinnPhong
    1.Lambert模型基于Lambert余弦定理构造出的模型,只计算了漫反射部分代码部分解析可以看到Lambert模型中只返回了漫反射(diffuse) 再看一下di......
  • Unity可视化资源依赖关系开发总结
    为了更好的查看资源依赖关系,有必要将资源数据和依赖关系按可视化的形式展现。0x0使用有向图作为数据结构由于预制体资源依赖关系复杂,可能呈现网状关系,因此关系利用有向......
  • Unity中,区别LookAt与LookRotation 一直不太理解的问题.....
    详细的资料可以看这个大佬总结的:参考资料我这里直接用图结合着说:首先呢,我们的主角要看向敌人,下图是还没看向之前:  使用LookAt函数看向敌人后,Z轴看向敌人(也是正面看......
  • 使用unity构建射击小游戏
    使用unity构建射击小游戏成果图参考例程www.manning.com/hocking问题汇总1、renderer.material方法过时换成使用this.GetComponent()参考网址:https......
  • unity3d Update()和FixedUpdate()的区别
    从字面上理解,它们都是在更新时会被调用,并且会循环的调用。但是Update会在每次渲染新的一帧时,被调用。而FixedUpdate会在每个固定的时间间隔被调用,那......
  • Unity绘制圆和缓动雷达图
    Unity绘制圆和缓动雷达图之前在做UI模块的时候遇到过需要做雷达图的效果,所以简单复习了一下关于网格绘制我们都知道Unity绘制图形是通过Mesh网格添加顶点进行绘制,那么知......
  • 【Unity3D】空间和变换
    1空间1.1左右手坐标系及其法则1.1.1左右手坐标系左手坐标系与右手坐标系​Unity局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系,只有观察空间采用右......