SRP-Demos
SRP-Demos copied to clipboard
请问给投影矩阵加上jitter的原理如何理解?
如题所述,您在代码里加上了随机偏移,我有一点不理解的是,4*4的投影矩阵,如果要在x,y方向加上偏移量,应该 是m03, m13, 为何这里是m02, m12?(2这个位置不应该是z分量吗)
var jitteredProjection = camera.projectionMatrix;
jitteredProjection.m02 += (offset.x * 2 - 1) / camera.pixelWidth;
jitteredProjection.m12 += (offset.x * 2 - 1) / camera.pixelHeight;
顶点变换用顶点坐标的 x 分量举例:
out.x = in.x * m00 + in.y * m01 + in.z * m02 + in.w * m03
加在第3列的偏移在做矩阵变换时等同于给所有的顶点坐标偏移相同量 (w=1),但是在做摄像机抖动时,可以认为是摄像机视锥体的底面发生平移,而摄像机原点的位置是不变的,因此对于不同距离上的顶点的偏移量是不同的,参考下图:
因此这里的偏移量需要与顶点的
z 分量相乘,最终经过齐次除法之后得到正确的偏移效果
参考:
- Pedersen, Lasse Jon Fuglsang. "Temporal reprojection anti-aliasing in inside." GDC Vault (2016).
- Karis, Brian. "High-quality temporal supersampling." Advances in Real-Time Rendering in Games, SIGGRAPH Courses 1.10.1145 (2014): 2614028-2615455.