在片段着色器中:
如果我有一个纹理(视口大小)上传为一个统一的sampler 2D。该纹理是渲染到一个较早的通道。当前运行的片段对应于1:1的纹理在UV空间。片段着色器采样周围的像素在纹理的基础上,delta 值。
如何保持 delta 与相机透视成比例?
例如:delta 是世界空间中的1个单位。
如果有帮助的话,你可以假设:
相机具有正交投影。
你可以访问碎片的世界位置。
视口/纹理-分辨率:(一二八○年,七二○年)
编辑
下面是我认为我可以做的:
CPU上的每一帧(或当摄像机投影改变时):
(sudo代码)
Mat 4组合=相机.投影()* 相机.视图();
Vec 4世界_增量= Vec 4(1,1,0,0);//不是位置
Vec 2 ndc_delta =(组合的 * 世界_delta).xy;
Vec2的uv_delta = ndc_delta / 2;
(uv_delta);
1条答案
按热度按时间uidvcgyl1#
我把问题搞复杂了。我不懂正投影。
如何保持 delta 与相机透视成比例?
视口[16,9]单位和world_delta [1,1]单位
然后,正如BDL在评论中指出的,您可以从以下公式中推导出NDC中的增量:
或者简单地说: