Android和Planet Rendering

Leo*_*eon 8 android opengl-es glsl rajawali

我正在学习如何在android上进行3D开发.我从一个带有一些云的简单旋转行星开始.我花了两天的时间试图让大气层焕发光彩.我在线查看并尝试使用着色器,但无法走远.

我的问题是,实现这一目标的最佳方法是什么?我向正确的方向推动可能就是我所需要的一切.

我附上了迄今为止我所拥有的行星的截图,以及我拍摄的最终目标.

感谢您的任何帮助.

目前的进展:

在此输入图像描述

最终目标:http: //25.media.tumblr.com/tumblr_m06q7l7BpO1qk01v6o1_500.png

Mic*_* IV 5

你需要的通常是在后期处理渲染过程中完成的.例如:

传递-1:将行星模型渲染为FBO纹理附件.Pass-2:设置屏幕四边形,并附加上一遍的纹理作为采样器均匀.

然后在片段着色器中应用发光效果.对于发光,有很多方法可以做到.例如,你可以在第一遍中绘制行星的轮廓,给它发光的颜色填充,然后使用smoothstep()进行模糊.然后在后处理过程中你把它放在主要的行星纹理下面.实际上,您可以在这里看到很多关于如何为圆形对象进行发光的代码示例.

还有一件事.添加基于模糊的光晕可以极大地影响移动设备的性能.有一种称为"距离场"的技术.Valve使用它来消除别名字体.但它也可以用来做发光.你创建一个距离场纹理纹理副本你的行星剪影一次,然后在后处理过程中使用它做光滑的发光效果.幸运的是你有生成它的功能.在这里,您可以找到论文和代码如何完成它.