Quiero componer modelos y partículas convencionales basados en triángulos con una escena de trazado de rayos a una velocidad de cuadro razonable.
webGL no le permite escribir gl_FragDepth
en el sombreador de fragmentos. No puede tener múltiples objetivos de renderizado, pero puede renderizar a una textura RGBA y luego usar esa textura como entrada para otra operación de dibujo. Entonces puedo renderizar mi escena de trazado de rayos y almacenar la profundidad como entrada para la siguiente etapa. Obviamente, esto está lejos de ser ideal, pero viable.
Me encantaría estar equivocado sobre esto, y esto se obtiene de la prueba y el error en lugar de cualquier fuente definitiva; por favor corrija cualquier suposición defectuosa
¿Cómo puede empacar / desempacar un flotador e, idealmente, algunos bits de bandera y demás, en una textura RGBA de manera eficiente en un sombreador de fragmentos GLSL?
Respuestas:
Estas son las funciones de empaquetar y descomprimir que funcionarán en WebGL y OpenGL ES 2.0, esto es solo para valores en el rango 0 ... 1, por lo que debe asegurarse de que su cálculo de profundidad esté en el espacio correcto.
Codificación de flotadores a RGBA
fuente