草庐IT

Unity中URP下的菲涅尔效果实现(URP下的法线和视线向量怎么获取)

文章目录前言一、实现思路二、实现原理我们可以由下图直观的感受到N与L夹角越小,点积越接近(白色)1。越趋近90°,点积越接近0(黑色)三、实现URP下的菲涅尔效果1、我们新建一个Shader,修改为最简2、获取世界空间下的顶点法线N3、获取顶点指向摄像机的视线单位向量L4、在片元着色器中,计算得到NdotL值5、用1-NdotL值得到菲尼尔效果四、测试代码前言我们在这篇文章中,了解一下URP中Shader怎么实现菲涅尔效果,同时学习一下URP下怎么获取法线和视线向量。一、实现思路Lambert光照模型公式:Diffuse=Ambient+Kd*LightColor*max(0,dot(N,L)

Unity中URP下使用屏幕坐标采样深度图

文章目录前言一、Unity使用了ComputeScreenPos函数得到屏幕坐标1、我们来看一下这个函数干了什么2、我们看一下该函数实现该结果的意义二、在Shader中使用(法一)1、在Varying结构体中2、在顶点着色器中3、在片元着色器中三、在Shader中使用(法二)1、在片元着色器中四、最终效果前言在上一篇文章中,我们实现了URP下深度图的使用。Unity中URP下开启和使用深度图但是,因为是使用模型UV采样的原因。所以,深度图效果不对所以,在这一篇文章中,我们使用屏幕坐标来采样深度图。一、Unity使用了ComputeScreenPos函数得到屏幕坐标1、我们来看一下这个函数干了什

Unity中URP下实现能量罩(外发光)

文章目录前言一、实现菲涅尔效果1、求N⃗\vec{N}N2、求V⃗\vec{V}V3、得出菲涅尔效果4、得出菲涅尔相反效果5、增加菲涅尔颜色二、能量罩交接处高亮和外发光效果结合1、修改混合模式,使能量罩透明2、限制0≤HighLightColor≤10\leqHighLightColor\leq10≤HighLigh

Unity中URP下实现能量罩(扭曲流光花纹)

文章目录前言一、能量罩花纹1、在属性面板接收能量罩花纹纹理2、申明纹理和采样器3、在顶点着色器,应用Tilling和Offset4、在片元着色器,纹理采样后,与之前的结果相乘输出二、能量罩流光1、在顶点着色器,记录原uv值2、在片元着色器,使用uv的y值,乘以一个系数加上_Time.y实现流动的效果三、抓屏扭曲1、在URP设置中,开启抓屏2、申明抓屏纹理和采样器3、在片元着色器四、测试代码前言在上一篇文章中,我们实现了能量罩外发光的效果。但是,这样看我们的能量罩十分单调不好看。在这篇文章中,我们给能量罩加上花纹、扭曲流光,使其变好看。Unity中URP下实现能量罩(外发光)一、能量罩花纹1、在

Unity中URP下的线性雾

文章目录前言一、线性雾雾效因子二、MixFog1、ComputeFogIntensity雾效强度计算2、雾效颜色混合lerp(fogColor,fragColor,fogIntensity);前言在之前的文章中,我们实现了URP下的雾效支持。Unity中URP下的添加雾效支持在上一篇文章中,我们解析了URP下统一不同平台下的z值是怎么实现的Unity中URP下统一不同平台下的z值我们在这篇文章中,看一下Unity在URP下线性雾是怎么实现的。一、线性雾雾效因子主要是使用上一篇统一好的z值,来计算雾效因子传入上一篇文章中,统一好的[0,Far]之间的z值。公式:factor=end−zend−s

Unity中URP下的指数雾

文章目录前言一、指数雾雾效因子1、FOG_EXP2、FOG_EXP2二、MixFog1、ComputeFogIntensity雾效强度计算2、lerp(fogColor,fragColor,fogIntensity);雾效颜色混合前言在之前的文章中,我们实现了URP下的雾效支持和在计算雾效时的Z值统一。Unity中URP下的添加雾效支持Unity中URP下统一不同平台下的z值我们在这篇文章中,来看一下URP下的指数雾是怎么实现的。一、指数雾雾效因子主要使用之前文章中统一好的z值,来计算来计算雾效混合因子。传入上一篇文章中,统一好的[0,Far]之间的z值。unity_FogParams.x:就

Unity中URP下深度图的线性转化

文章目录前言一、_ZBufferParams参数有两组值二、LinearEyeDepth1、使用2、Unity源码推导:3、使用矩阵推导:三、Linear01Depth1、使用2、Unity源码推导3、数学推导:前言在之前的文章中,我们实现了对深度图的使用。因为,深度图不是线性的。所以,在使用时,我们使用了Linear01Depth函数对其进行了线性转化。Unity中URP下开启和使用深度图但是,对深度图进行线性转化还有其他函数。在这篇文章中,我们来看一下深度图线性转化的Linear01Depth函数和LinearEyeDepth函数干了什么。一、_ZBufferParams参数有两组值在Op

Unity中URP下实现深度贴花(雾效支持和BRP适配)

文章目录前言一、让我们的贴画支持雾效1、我们舍弃内部的MixFog方法2、使用雾效混合因子对最后输出颜色进行线性插值相乘二、在Shader中,限制贴花纹理的采样方式1、申明纹理和限制采样方式的采样器2、在片元着色器进行纹理采样三、BRP适配1、C#脚本中,打开摄像机深度图2、适配代码四、最终代码1、地缝效果2、魔法阵3、芙宁娜贴花前言在上一篇文章中,我们实现了贴花的效果。但是,细节效果需要优化。Unity中URP下实现深度贴花我们在这篇文章中,来优化一下贴花Shader的细节。一、让我们的贴画支持雾效原雾效使用方法是只支持不透明对象的。但是,我们的贴画是半透明的。所以,需要对其进行调整。1、我

Unity中URP下的顶点偏移

文章目录前言一、实现思路二、实现URP下的顶点偏移1、在顶点着色器中使用正弦函数,实现左右摇摆的效果2、在正弦函数的传入参数中,加入一个扰度值,实现不规则的顶点偏移3、修改正弦函数的振幅A,让我们的偏移程度合适4、修改正弦函数的ω来调节周期,调节偏移频率5、对其x也做同样的偏移(该效果根据个人喜好添加)6、在属性面板定义一个四维变量用来控制正弦的振幅和周期三、测试代码前言在上篇文章中,我们实现了URP下的半透明效果。Unity中URP下的半透明效果实现在这篇文章中,我们实现一下像鬼魂一样的顶点偏移效果。一、实现思路在顶点着色器中,对模型本地空间坐标在转化成齐次裁剪坐标前,进行赋值修改y=Asi

Unity中URP下统一不同平台下的z值

文章目录前言一、ComputeFogFactor来计算雾效混合因子二、UNITY_Z_0_FAR_FROM_CLIPSPACE来统一计算不同平台下的Z值1、DirectX平台2、GL平台下(在Unity.2022.LTS下,该功能没有完善)3、Opengl下前言在之前的文章中,我们实现了URP下的雾效。Unity中URP下的添加雾效支持我们在这篇文章中,看一下Unity在URP下,计算雾效因子时是怎么统一Z值的。一、ComputeFogFactor来计算雾效混合因子二、UNITY_Z_0_FAR_FROM_CLIPSPACE来统一计算不同平台下的Z值UNITY_REVERSED_Z(DX类平台