在OpenGL中的3D纹理采样

时间:2017-06-03 06:39:38

标签: opengl 3d glsl rendering volume-rendering

我目前正在尝试使用类似glTexImage3D的东西来学习3D纹理上的光线投射。我从一开始就关注this tutorial。我的最终目标是制作一个可以这样工作的程序:

This one

我的理解是,这是使用光线投射方法渲染的,模型是作为3d纹理导入的。光线投射和纹理采样任务在片段着色器中执行。我希望我可以复制这个程序作为一种做法。你能回答我的问题吗?

  1. 应使用哪种文件格式导入3D纹理?
  2. 我应该使用哪种glsl函数来检测光线与纹理之间的距离?
  3. 3D纹理采样和体积渲染有什么区别?
  4. 是否有可供我使用的在线教程?
  5. 如何制作自己的3D纹理? (是否可以使用搅拌机制作一个?)

1 个答案:

答案 0 :(得分:1)

  

1。应该使用哪种文件格式导入3D纹理?

无关紧要,OpenGL不处理文件格式。

  

2。我应该使用哪些glsl函数来检测光线与纹理之间的距离?

没有“准备就绪”的光线投射功能。你必须自己实施一个raycaster。即在起点和终点之间沿线(光线)采样纹理,并将样本积分到最终颜色值。

  

3。 3D纹理采样和体积渲染有什么区别?

采样3D纹理与采样2D,1D,立方体贴图或纹理拓扑的其他任何内容没有太大区别。对于给定的向量A,某个向量B被重新定义,即最接近A(最近样本)所指向的位置的样本值或内插值。

  

4。是否有可供我使用的在线教程?

http://www.real-time-volume-graphics.org/?page_id=28

  

5。如何制作自己的3D纹理? (是否可以使用搅拌机制作一个?)

你当然可以使用Blender,例如通过烘烤雾密度等体积数据。但整个主题过于宽泛,无法在此充分涵盖。