首先,我是WebGL的新手,一般是OpenGL编程。我认为这些工具可以让我解决问题,但我真的不知道从哪里开始。
我的问题: 给定单个原点,目标(三角形或网格)和许多(数千)方向向量的列表,有没有办法使用我的GPU来计算击中目标的光线数量?理想情况下,我想利用GPU的强大功能来解决这个问题,因为它似乎比我的CPU更适合它。
我很确定我可以使用我的cpu编写一些代码来执行此操作,但是在for循环中通过我的向量需要很长时间。
由于
答案 0 :(得分:0)
你可以试试这个,虽然这不是一个让步的东西:
答案 1 :(得分:0)
我认为实现你正在尝试做的事情的方法是以另一种方式思考你的问题,以某种方式反转"来自银幕的光线投射。
您说您只有一个来源,一个目标和许多方向。因此它大致类似于光线追踪渲染,因此您可以从WebGL的角度来考虑问题:使用投影矩阵在屏幕上绘制3D对象。
使用适当的FOV创建与您的原点对应的投影矩阵,查看您的目标
在纹理中以平面颜色(例如黑色背景上的白色)渲染对象,使用此投影矩阵。
使用相同的投影矩阵来预测"项目"你的光线进入2D纹理坐标。
检查光线方向生成的2D坐标中的纹理像素:如果像素为白色,则此光线会击中对象。
您甚至可以使用另一个着色器来实现最后两个部分,方法是将光线方向传递到顶点缓冲区中,并在片段着色器中使用先前创建的纹理。问题是从着色器获取增量值。