У меня есть средство визуализации WebGL, и я хочу преобразовать случайные координаты мира в координаты экрана в шейдерах фрагментов.Мировое положение для позиции экрана в фрагменте шейдера glsl
Это позволит мне сравнить «рассчитанные координаты экрана» с текущими координатами экрана фрагмента.
У меня есть вся информация, необходимая для этого, я верю, просто не уверен, что это правильный способ сделать это.
...
// available information:
// uCanvasWidth (float)
// uCanvasHeight (float)
// modelMatrix (mat4)
// modelViewMatrix (mat4)
// projectionMatrix (mat4)
vec4 someWorldCoordinates = vec4(1., 2., 3., 1.);
// map it to screen coordinates?
vec4 screenCoordinates = ???
// compare to current fragment location
if(screenCoordinates.x > gl_FragCoord.x){
// do stuff
}
...
Я думаю, что это даст вам инвертированный 'screenSpace.y'. –
Да, вы правы, забыли об этом, исправлено :) –
должно быть 'screenSpace = (ndx.xy * .5 + .5) * vec2 (viewportWidth, viewportIHeight) + vec2 (viewportLeft, viewportRight);'? – gman