- 博客(6)
- 收藏
- 关注
原创 Unity渲染小知识点汇总,备忘一下,持续更新...
延迟:利用MRT(Multi Render Target)需硬件支持,依次渲染Diffuse,Normal,Depth等信息到多张RT中,之后利用这些RT以光源为单位计算每个光源产生的颜色再合并。URP:可编程,SRPbatch,通过URP的接口获取所有光源信息统一在一个Pass里计算。前向:轻量化,多光源和物体渲染pass数是乘法关系。1.简述前向渲染管线,延迟渲染管线,URP管线。
2025-03-07 16:05:12
203
原创 Unity实现基于POM的视差云效果
如图所示把单位为1的总深度向下依次等分多层,图中分了9层,T代表uv坐标,视线在T0的深度,在没有视差的情况下大约深度值为0.75,为了实现视差效果,需要计算出Tp的坐标,正常的SPM原理是,沿着向量V的反方向,依次采样出T的深度值,并且和当前层深度进行比较,如果层深度值大于采样深度值,步进结束,把此时的T当作近似的视差之后的坐标。实现了一个函数,输入原始uv,切线空间视角方向,高度干扰参数(产生略微波动感),为什么是切线空间,归一化的视角向量的xy分量就是视角的视差的uv偏移量了,这点很重要。
2025-02-28 21:44:50
1257
原创 渲染流水线简单梳理
如图所示,左面是观察空间坐标系,右面是其次裁剪空间,此时顶点坐标做了齐次处理(增加了w=1分量),主要原因是,透视空间中,数值是无法正常做线性插值的,需要增加维度方便透视投影和裁剪(通过升维的方式简化裁剪过程,想到这个方法的真是天才,我怀疑他是高纬度的生物),经过裁剪矩阵(投影矩阵)转换后,w有了新的意义。NDC空间下的,在dx中-1<=x,y<=1,0<=z<=1,在OpenGL中-1<=x,y,z<=1,从而判断是否是在可视范围内,完全在NDC外的剔除,部分在NDC内的,生成新的图元。
2025-02-27 01:19:51
585
原创 Unity实现视察3D效果
如上图,绿色是前图且没有深度,红色后图是视差偏移的图,视线和两张图分别相交于AB两点,计算出parallaxUV后可以把深度值z忽略,在计算过程中uv实际就是切线空间里xy轴,法线是切线空间的z轴,为什么是在这个坐标系,因为这个空间可以看作是贴图空间,计算后的uv也是基于贴图空间的。代码如下,后面改成urp或者直接用在UI的sprite上,稍微改一改就行了。有了这个函数后面简单了,直接把多张图的颜色混合一下就行了。在一个面片上实现,多张图具有深度层次效果。
2025-02-23 20:40:30
372
原创 Unity获取屏幕UV方法的总结
1.VPOS语义获得2.顶点通过ComputeScreenPos计算获得半成品屏幕坐标positionNDC,在片元里除以w分量3.1利用顶点输出的SV_POSITION语义,在片元里直接用SV_POSITION变量除以屏幕分辨率3.2在顶点里获得裁剪空间坐标,片元里重新映射到[0,1]
2025-02-18 22:16:37
1184
URP视差云,视差遮蔽映射(Parallax Occlusion Mapping, POM)实现
2025-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅