【发布时间】:2020-11-20 19:53:35
【问题描述】:
我是计算机图形学的新手,我一直在尝试使用threejs 进行照明和着色。现在我正在研究 WebGL,我想编写一些着色器来提高 glb 文件的图像质量。有没有一种快速的方法可以在没有 Threejs 的情况下将其加载到场景中?还是应该将 Threejs 和 WebGL 混合使用?
【问题讨论】:
我是计算机图形学的新手,我一直在尝试使用threejs 进行照明和着色。现在我正在研究 WebGL,我想编写一些着色器来提高 glb 文件的图像质量。有没有一种快速的方法可以在没有 Threejs 的情况下将其加载到场景中?还是应该将 Threejs 和 WebGL 混合使用?
【问题讨论】:
WebGL 不支持 .GLB 文件。 WebGL just draws triangles, points, and lines。制作一个完整的 .GLB 查看器几乎需要复制所有三个.js。如果你愿意,你可以这样做。您需要编写支持各种lights、shadows、可能physically based rendering、skinning、变形目标、environment maps、环境光遮蔽、法线贴图等的着色器。您需要制作某种 scene graph 来将其全部加载到其中,因为 .GLB 使用场景图来组织场景。要支持阴影,您需要能够为每个灯光绘制一次场景以生成阴影贴图。您可能需要在运行时生成着色器以针对每个对象进行优化,以便仅使用它需要的功能。您还需要编写自己的纹理加载器,实现某种材质系统和动画系统。您可能需要后期处理,以便进行色调映射、发光和景深效果。
或者您可以继续使用已经编写好的three.js。它是开源的,所以如果你想改进着色器,那就开始编辑吧。
【讨论】: