首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL/GLSL:从体积数据中渲染云/烟的最佳算法是什么?

OpenGL/GLSL:从体积数据中渲染云/烟的最佳算法是什么?
EN

Stack Overflow用户
提问于 2010-04-07 19:26:12
回答 1查看 5.8K关注 0票数 3

我想渲染3D体积数据:密度(可以映射到Alpha通道),温度(可以映射到RGB)。目前我正在模拟最大强度投影,例如:在end.But中渲染最密集/不透明的像素这种方法失去了深度感知。

我想模仿这种效果,就像烟雾中的火焰。

所以我的问题是,OpenGL中基于可用数据生成图像的技术是什么?

任何想法都是受欢迎的。

谢谢,阿曼。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-09 02:03:21

我会先试试体积光线投射器。

你可以在谷歌上搜索"Volume Visualization With Ray most“,这应该会给你最需要的东西。NVidia有一个通过3D纹理进行光线投射的很好的样本(使用openg)。

在您的特定实现中,您只需要不断地遍历累积温度的体积,直到达到所需的密度。

如果您的体积不适合视频内存,您可以按块进行光线投射,然后执行合成步骤。

光线投射的快速说明:

CPU: 1)在世界空间中渲染一个六边立方体作为绘图基元,确保使用深度剔除。

顶点着色器: 2)在顶点着色器中存储顶点的世界位置(这将对每个碎片进行插值)

片段着色器: 3)使用插值位置减去相机位置来获得遍历体积的向量。4)使用while循环从立方体上的点到另一侧遍历体积。知道何时结束的三种方法。A)在每一步测试该点是否仍在立方体中。B)与立方体进行光线相交,并计算相交之间的距离。C)使用正向面剔除对立方体进行预渲染,并将深度存储到第二个纹理图中,然后在屏幕像素上采样以获得距离。

5)在循环和设置像素颜色时进行累积。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2591956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档