使用立方体贴图纹理作为漫反射源代替2D

时间:2015-08-05 16:43:24

标签: javascript opengl-es three.js webgl shader

我正在尝试在球体上投射大量的32k分辨率的equirectangular地图。

由于支持1k-2k大小的纹理的旧显卡几乎无法访问32k纹理,并且将32k图像缩放到1k会丢失大量细节,我决定通过将每个源图分别投影到6个立方体来分割每个源图构成立方体贴图的面,以便在旧卡上显示更多细节。

但是,我实际上无法使用three.js显示这些立方体贴图球体。我可以将MeshPhongMaterial.envMap设置为我的立方体贴图,但当然这会使球体网格反射纹理。

使用ShaderMaterialShaderLib['cube']来“伪造”某种类型的天体,可以产生可接受的结果。但这会降低所有使用MeshPhongMaterial的照明,法线贴图和所有其他方便(和漂亮)事物的能力。

如果可能的话,我不想从头开始编写一个完整的着色器进行如此简单的调整(将texture2D调用textureCube调用一次。有没有办法强制three.js从立方体贴图而不是2D纹理中读取漫反射术语,或者是一种编辑着色器three.js在内部使用的简单方法?

0 个答案:

没有答案