Quero compor modelos e partículas convencionais baseados em triângulo com uma cena traçada por raios a uma taxa de quadros razoável.
O webGL não permite escrever o gl_FragDepth
sombreador no fragmento. Você não pode ter vários destinos de renderização, mas pode renderizar em uma textura RGBA e, em seguida, usar essa textura como entrada para outro draw-op. Para que eu possa renderizar minha cena traçada por raios e armazenar a profundidade como entrada para o próximo estágio. Obviamente, isso está longe de ser o ideal, mas viável.
Eu adoraria estar errado sobre isso, e isso é coletado por tentativa e erro, e não por qualquer fonte definitiva; corrija quaisquer suposições defeituosas
Como você pode empacotar / descompactar um float e, idealmente, alguns bits de flag e tal, em uma textura RGBA eficientemente em um shader de fragmento GLSL?
Respostas:
Aqui estão as funções de empacotamento e descompactação que funcionarão no WebGL e OpenGL ES 2.0; isso é apenas para valores no intervalo 0 ... 1, portanto, você deve ter cuidado para que o cálculo da profundidade esteja no espaço correto.
Codificação de flutuadores para RGBA
fonte