簡體   English   中英

GLSL-對3D紋理進行采樣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM