自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Unity中的BRDF

一般在DCC软件(SP,SD,Max,Maya)输出,Diffuse,Normal,Mask贴图,UV,顶点色等。SurfaceData储存了基础属性输入的值,InputData储存了世界坐标,世界法线,裁剪空间坐标,世界空间视线方向等。BRDFData除了存储基础属性外,还储存了reflectivity,roughness等,供后续光照计算使用。整个光照计算部分分为直接光和间接光,直接光和间接光又分漫反射和高光反射。二,InputData&SurfaceData。三,BRDFData。

2024-12-02 15:38:09 146

原创 Unity中的卡通渲染

标准材质 卡通材质。现实中边缘光是由背光产生的,风格化渲染中可以通过菲尼尔计算出来。NdotH,卡通渲染高光边缘比较硬,加个Smoothstep。增加额外Pass渲染一张头发阴影图,脸部采样这张图。描边有几种算法,这里选择法线外扩描边。用NdotL采样一张ramp贴图。

2024-10-22 16:26:46 536 1

原创 Unity中常用的雾效

【代码】Unity中常用的雾效。

2024-10-15 18:53:08 508

原创 Unity中的常见Shader

丝绸 丝绒 标准。预积分次表面散射(透射+皮肤明暗过渡部分泛红)KajiyaKay光照模型。Thickness反向。

2024-10-15 15:27:53 343

原创 Unity中常见的水面渲染

毛神 @浅墨_毛星云 整理的图。正弦波在竖直方向上运动,Gerstner波在正弦波的基础上增加了水平方向上的运动。叠加多次可以增加更多细节,模拟水面一般需要64或128层,性能方面存在一定压力。波形出来了,但着色不对,法线没有随着顶点一起变化,需要重新计算法线。1.利用视空间下的深度值计算深水区和浅水区颜色。利用上面算出的边缘Mask,叠加一张泡沫贴图。采样深度图和不透明图时在UV上加入偏移量。单层波效果太单一,再叠加一层看看。可以参考这篇文章,写的比较详细。和不透明颜色做个lerp。

2024-10-11 15:00:03 273

原创 在Unity中基于URP实现基础光照模型

PBR:直接光漫反射+直接光镜面反射+间接光漫反射+间接光照镜面反射。HalfLambert:世界法线与光照方向的点积(NdotL)Lambert:世界法线与光照方向的点积(NdotL)BlinnPhong:半角向量与世界法线的点积。Phong:反射向量与视线方向的点积。

2024-06-18 14:40:39 376

原创 Unity中的反射效果(基于URP)

ReflectionProbe反射探头会采样周围生成一张CubeMap,在Shader中通过变量访问。ReflectionProbe有三种模式,baked,custom,realtime。baked提前烘培,custom可以烘培,也可以在定义一张CubeMap。SSR的一种改进方案,性能更好,会用到ComputeShader,某些手机不支持在Shader里写Buffer,需要注意。适用于表明平整物体的反射,镜子,湖面等。通过步进方式获取反射信息,只会反射屏幕中出现过的像素。ComputeShader部分。

2024-06-18 14:38:18 739 1

原创 Unity中的模糊效果(基于URP)

六、移轴模糊 (Tilt Shift Blur)十、方向模糊(Directional Blur)三,Kawase模糊(Kawase Blur)一,高斯模糊(Gaussian Blur)八、粒状模糊(Grainy Blur)九、径向模糊(Radial Blur)五、散景模糊(Bokeh Blur)四、双重模糊(Dual Blur)七、光圈模糊(Iris Blur)二,方框模糊(Box Blur)十种模糊效果,以后处理方式实现。

2024-06-18 14:28:44 3266

原创 在Unity中用ComputeShader实现草地剔除(基于URP)

需要传到ComputeShader里的数据:草的数量,所有草的矩阵信息,包围盒尺寸,相机的VP矩阵,还有用于计算遮挡剔除的深度图信息。模型可以动态创建,也可以直接用静态模型,声明一个uint数组储存模型信息。首先声明两个ComputeBuffer,用来储存Mesh和剔除后的数据。声明一个ComputeBuffer储存草的transform信息。二,将数据传到ComputerShader里做剔除。三,将剔除后的数据传到Shader渲染。草地数据包括模型,旋转,位置,缩放。步骤:一,获取所有草的数据。

2024-06-18 11:52:09 887

原创 Unity 资源优化

下图有4张UI图片,但它们都用了系统默认材质,都是共享图集的元素,并且它们在场景中顺序也是相连的,所以满足合批优化的条件,最终SetPass Calls(Draw Calls)是1。·To smaller:纹理缩放到最小尺寸大小值的“2的幂”的尺寸大小。·To larger:纹理缩放到最大尺寸大小值的“2的幂”的尺寸大小。·Resample Curves: 将动画曲线重新采样为四元数值,并为动画中的每个帧生成一个新的四元数关键帧。·To nearest:纹理缩放为最接近“2的幂”的尺寸大小。

2024-06-18 11:38:04 2252

原创 Unity 动态天气系统(基于URP)

值用float,颜色用Color,是一个定制,无法满足随时间变化而变化,用AnimationCurve和Gradient替换,AnimationCurve.Evaluate(Time time),Gradient.Evaluate(Time time)。白天时,灯光朝向与太阳一致,晚上时,灯光朝向与月亮一致,太阳朝向与Y轴的夹角大于0为白天,小于0为夜晚。1,太阳(月亮)随时间旋转:采样贴图贴在天空盒上,直接用天空盒UV会有拉伸问题,采样的UV需要C#传矩阵到Shader。创建太阳,月亮,灯光的引用。

2024-06-18 11:02:46 750 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除