实时光线追踪器
Real time ray tracer
我想用C++做一个基本的实时CPU光线追踪器(主要用于学习提案)。本教程非常适合制作基本的光线追踪器。但是,将其实时绘制在屏幕上的最佳解决方案是什么?我不是在问如何优化光线追踪部分,只是在问绘画部分,以便它可以在屏幕上而不是在文件中绘制。
我正在为窗口开发。
您可以查看这篇代码项目文章,了解如何使用 Win32API 的基本绘制机制
更新:OP想要快速绘制,这是Win32API不提供的。 OP需要这个,以便他们可以在优化过程中测量光线追踪算法的加速。 绘图的其他可能性是:DirectX,XNA,Allegro,OpenGL。
我正在专业研究实时 CPU 光线追踪器,从我在那里工作 2 年看到的情况来看,显示图像的 GPU 部分不会成为瓶颈,如果您达到瓶颈,瓶颈将是您的 RAM 的速度,我认为绘图技术不会产生任何显着差异。
例如,我们使用集群(一个 CPU 不够:p),我们能够在看天空时以 1920x1080 渲染 100-200fps,但瓶颈不是显示部分,而是网络......编辑:我们正在使用OpenGL进行显示。
当你做一个CPU光线追踪器时,你不会做printPixelToGPU(),但你会写入你的RAM,然后在图像完成后将其发送到GPU。做printPixelToGPU()可能会导致很大的开销,而且(在我看来)这是一个非常糟糕的设计选择。
看起来过早优化。但是,如果您仍然担心这一点,只需使用OpenGL,directX...进行多少RAM纹理到GPU传输,并打印平均帧速率。您可能会看到帧速率非常高,因此除非您使用的是SDRAM或非常差的GPU,否则您肯定永远不会达到该"瓶颈"。
- 光线追踪:椭球命中功能
- 平面和球体光线追踪之间的交点
- 不完整的多线程光线追踪器花费的时间是预期的两倍
- 光线追踪对象文件漫反射着色问题
- 光线追踪 - 反射
- 光线追踪锥.判别式给出 -ve 值,因此没有交集
- C++:光线追踪器导致内存不足错误 - 由于反复调用"new"?
- 实时光线追踪器
- 光线追踪 - 几何球体相交 - 相交函数对所有光线返回 true,尽管没有相交
- 优化光线追踪器
- C++:光线追踪器输出中的非确定性行为
- 光线追踪框交集 (c++)
- 光线追踪网格上的伪影黑线(使用Embree)
- 光线追踪框交叉点
- 光线追踪-照明方程
- 基于前向的光线追踪器
- 光线追踪器不会渲染对象的多个实例
- 计算机图形行业的人们用什么来进行光线追踪?
- 在光线追踪器中实现软阴影
- 分布式光线追踪器的基本思想