我正在构建一个依赖于three.js的webGL光线跟踪器。 为了加速计算并使其成为实时,而不是光线跟踪屏幕的所有像素,我只考虑它们的一个子集(我考虑像素块而不是每个像素独立)。
因此我使用的是不同的阴影,即:
以下是它的three.js代码:
// first rendering: render the scene in a low resolution texture
rayTracingRenderer.setSize(window.innerWidth/blockSize,window.innerHeight/blockSize);
rayTracingRenderer.render(scene, camera, texture, true);
// second rendering: render the texture on a full screen quad
rayTracingRenderer.setSize(window.innerWidth,window.innerHeight);
rayTracingRenderer.render(scenePostProcess, cameraRTT);
为了计算第一次渲染的较低像素数,我只是减小了渲染器的大小。我之后调整大小以计算适当数量的像素。
但是这段代码不起作用:它打印出一个带有白噪声的黑屏。
显然问题来自于 我在两个render()
调用 之间调整渲染器的大小。实际上,无论价值如何,我都会为所有人设置一次分辨率。
例如,当我将分辨率设置为screenWidth / blockSize时,screenHeight / blockSize我在屏幕上得到一个小图像,当我将其设置为screenWidth时,screenHeight我得到了一个全屏模糊图像。 (全屏模糊图像是预期的结果,纹理大小为低分辨率,但处理的像素数是屏幕的像素数,因此我根本没有加速任何东西。)
你能否发现我本可以犯的任何错误,或者这是一个错误,我应该继续解决?