【发布时间】:2015-07-23 11:36:44
【问题描述】:
去年我参加了计算机图形学课程(研究生水平)。我们花了这个学期构建光线追踪器并为其添加功能。我们用 C++ 构建一切从头开始,大概是为了更好地理解底层数据结构和算法。这是我的问题:如果我要在计算机图形行业找到一份工作,如果我开始从头开始构建所有东西来进行这样的光线追踪,人们会认为我疯了吗?是否有支持光线追踪的类似于 OpenGL 的图形库和框架? OpenGL 本身是否支持光线追踪?
我的课程教授是计算机图形学理论基础和相关数学方面的专家,但对计算机图形学专业人士使用的现代框架和库一无所知。她更像是一个科学家而不是实践者。
如果我要使用库来帮助我进行光线追踪,如果它支持将计算分配到计算机集群可能会很好。我也可以使用书籍推荐,如果您知道哪一种可以帮助弥合我的理解上的差距。
【问题讨论】:
-
有人在这里点了大火腿吗?
-
@Matt Ball,GameDev 可能不是这个问题的最佳论坛;光线追踪用于电影行业,但在视频游戏行业中使用不多,因为它是计算密集型的。
-
“如果我像这样从头开始构建所有用于光线追踪的东西,人们会认为我疯了吗?”如果你打算从事专业的 CGI 工作,那么可以。然而,大多数 CGI 工作室都使用内部软件,对这些软件结构的任何理解都需要从根本上了解光线追踪的工作原理。因此,如果您想开始从事专业 CGI 的职业,了解光线追踪器如何从头开始工作是一个很大的好处。
-
“OpenGL 本身是否支持光线追踪?”从概念上讲,OpenGL 是一个光栅化绘图 API:您向它发送图元(点、线、三角形),然后它将它们绘制到屏幕上——一个三角形一个三角形。没有场景的概念,甚至没有像网格或三角形这样的平凡事物。 OpenGL 甚至不是一个框架。但它被许多框架用作渲染后端。虽然 OpenGL 本身并没有实现光线追踪,但可以使用 OpenGL 工具(即着色器)实现光线追踪器。然而,那些基于 OpenGL 的光线追踪器并不像那些开发良好的光线追踪器那样通用。
标签: c++ opengl graphics frameworks raytracing