如何从几何着色器入口点获取屏幕中参考点的坐标?SceneKit公开了一堆矩阵变换及其反转(https://developer.apple.com/reference/scenekit/scnshadable >使用SceneKit提供的输入),但我无法弄清楚如何使用它们......
例如,在顶点着色器中执行的几何入口点中,我尝试过:
varying vec2 screen_coords;
#pragma body
screen_coords = (u_inverseModelViewProjectionTransform * _geometry.position).xy
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用:(
为了澄清,screen_coords如果点在屏幕上取决于它的确切位置,我想要在[0,1]*[0,1]中,如果不是,则为其他东西.
我花了一段时间,但它是:
vec4 screenPos = u_modelViewProjectionTransform * _geometry.position;
screen_coords = (screenPos.xy / screenPos.w + 1.0) * 0.5;
Run Code Online (Sandbox Code Playgroud)
说明:
screenPos大致对应于屏幕空间中的坐标。screenPos.xy / screenPos.w重新调整这些坐标。然后奇怪的是,这给出了输入 [-1, 1] * [-1, 1] 所以我最后添加了一个偏移量和比例以获得 [0, 1] * [0, 1] 中的结果
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |