文章列表
Unity-URP延迟渲染Feature
本文记录对URP延迟管线的开发改造。
GBufferShader
HBAO
HIZ-Build
SSAO
SSGI
SSR
TAA
ContactShadow
more...
Unity-URP延迟渲染SSR
原理基础SSR需要ColorTexture和DepthTexture。
视角空间的SSR的大概步骤:1、屏幕空间坐标——>ViewPos2、ViewPos获取ViewDir和ViewNormal3、ViewDir和ViewNormal算出视角的反射方向4、从ViewPos开始RayMarch,方向是反射方向,逐步RayMarch判断深度差(小于Thickness为击中),判定成功获取到那个地方的ViewPos,转换为屏幕空间坐标返回5、屏幕空间坐标采样Color图,得到反射颜色
代码思路优化项HIZ加速通过生成梯度深度图,加速射线检测区间的判定。每次从最小的mip开始,如果不合格...
more...
Unity-URP延迟渲染HBAO
SSAO的进化版。
不再是通过对比深度来判断是否遮挡,而是寻找每个方向上的地平线高度。
原理基础GI是一个几何点从旁边所有角度的光照和。HBAO就是从几何点往旁边和方向去计算遮蔽的过程,通过简化方向为8个或者16个,结果贴合GI的原理。
从一个几何点,往周围若干个方向打射线,找到每个方向的最大遮挡高度的角度。
下图中,S0、S1、S2、S3是4个方向的射线,分别会得到一个最大的水平角。方向越容易被遮挡——>水平角越大——>AO越强
如何计算水平角?1.计算坡度Slope
坡度 = 高度变化 / 水平变化tanAngle...
more...
Unity-BongoCat自动开箱
记录BongoCat的自动开箱。
BongoCat的dll没有加密混淆,作者也说代码可见,可以自己修改。
使用反编译工具dnSpy,打开游戏目录的Assembly-CSharp.dll。
然后修改dll里对应的代码。
修改完保存dll替换。
1.点击倍数Pet类里,找到AddPet方法,修改点击数据。
每次点击计数+100
123this._currentGained += 100;this._currentAchievement +=...
more...
UE5-MultiPass添加
UE里默认不支持多Pass,项目里一般都会需要这个功能。
记录一下一种实现思路。
效果视频:
StaticMesh多Pass实现主要是两个方面,一个是材质管理,另一个是把多Pass加入渲染流程中。
材质管理首先需要在UStaticMesh和UStaticMeshComponent里新增多Pass材质。
UStaticMesh是用资产编辑器打开的窗口,最里层的材质设置。
UStaticMeshComponent是SM要渲染的必要组件,可以设置材质进行覆盖UStaticMesh里的材质。(常见里摆放或者蓝图里)
多Pass的结构定义,材质Index以及是否投阴影。
123456789101112...
more...
UE4-DeferredDecal
大佬们的文章链接参考:
https://zhuanlan.zhihu.com/p/666213716
https://zhuanlan.zhihu.com/p/100748588
UE的DeferredDecalUE的延迟贴花有两种版本,一种是使用DBuffer,还有一种不使用DBuffer。
不使用DBuffer的情况
首先有一个BOX来划定范围,投射方向。
过程中画两次这个BOX。
第一次,关闭Cull,画Stencil:
第二次,CullBack,模板测试等于:
BOX的范围内,深度图转换为WorldPos,然后再转换到BOX空间。
使用BOX内的空间坐标采样Decal图,然后加到G...
more...
Base-阴影ShadowMap相关
这篇记一下ShadowMap阴影的技术。
1.ShadowMap相关ShadowMap的原理从Light的方向渲染场景的深度图,因为具有遮挡关系,所以能做阴影用。https://zhuanlan.zhihu.com/p/384446688
阴影投影的过程需要投影的物体的转换过程,从Light方向画这些物体的深度:
World空间——
——>Light空间 先位移,再旋转
——>Light视锥体 (XY范围缩放,Z深度缩放)...
more...





