[英]GLSL - Sample an volume of 3d texture
我最近正在OpenGL中使用3d紋理。 我意識到,當您使用3d紋理時,必須大量使用texture3d()。 這幾乎是一個gpu殺手。 glsl中是否有任何功能可以讓我采樣3D紋理的體積? 因此,我可以執行以下操作,而不是調用texture3D()32768次:
texture3DVolume(3dtexture, vec3(0.5, 0.5, 0.5), vec3(0.2, 0.2, 0.2));
其中樣品為0.5 0.5 0.5,體積為0.2 0.2 0.2。
否:正如您自己注意到的那樣,這涉及對所有音量進行采樣。
在2D模式下,您可以使用匯總面積表。 它使您能夠僅用4個樣本來計算“框”內矩陣的所有值的總和。 我想這個概念很容易擴展到3D。
請注意,您將有一個非常昂貴的預處理步驟。 而且您只能擁有均值和總和,沒有其他奇特的東西,例如幾何均值或中位數。
這是AMD針對不同用例的一些解釋: http : //developer.amd.com/media/gpu_assets/GDC2005_SATEnvironmentReflections.pdf
我猜您也可以使用mipmaps:對2x2x2體積進行采樣,對第一個rip mipmap進行采樣...但是,對於任意的采樣位置,這將無法立即使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.