0
我使用OpenGL ES 3.0在GPU上創建流體動力學效果。 使用16位浮點FBO我可以使該效果正常工作。16位浮點紋理
我的問題是我針對的GPU不支持浮點紋理。效果在精度不足的情況下崩潰。
這種效果只有二維,所以我只能從FBO的前2個頻道讀取和寫入。所以,我想知道是否有人成功地使用了兩個unsigned int紋理通道來增加額外的精度,以及這可能如何。
我目前的解決方案如下(GLSL片段着色器代碼段),它根本不能很好地工作:
#define read(vec) ((((vec).xy * 255.0) - 127.0)/127.0) + (vec).zw/255.0
vec4 write(vec2 vec)
{
vec2 temp = ((vec * 127.0) + 127.0);
vec2 a = floor(temp)/255.0;
vec2 b = mod(temp, 255.0);
return vec4(a,b);
}
我認爲主要的問題可能是與任何像這樣的方案是不可能的寫零。
我希望有人已經解決了這一點,還是可以看到解決這樣的問題:)