我制作简单的fps游戏使用光线投射,因为我认为它非常快速和轻的方法。我的Raycasting函数将数据保存到一个顶点数组中,然后由OpenGl呈现。但是因为这个数组包含屏幕上每个像素的顶点,这意味着每帧我呈现2073600次眩晕(1920x1080),在我看来,这并不是很好。所以在这一点上,我认为最好是放弃所有的光线投射,让它看起来就像雷射机,但使用真正的3d,这意味着每帧只能渲染大约20次眩晕。
那我该怎么办?我应该用不同的渲染方法来进行光线投射吗?我应该用真正的3d吗?还是每帧2073600次眩晕就可以了?
发布于 2021-01-22 23:53:18
最快的是直接在GPU上进行光线投射,您可以使用计算着色器(我没有任何经验),但是它也可以在标准着色器渲染管道上这样做,请参阅我的GLSL版本:
粗的,你需要添加BVH或八叉树才能对复杂的场景有合理的速度.
如果你坚持光线投射在CPU方面,那么它将更好地存储你的输出到2个纹理,一个保持深度和其他RGB颜色。如果您能够以足够的精度访问4个组件纹理,则可以使用RGBD格式和单个纹理。为了渲染你只需渲染单个四色和片段着色器来完成剩下的..。
https://stackoverflow.com/questions/65853999
复制