【问题标题】:Easy way to use light in fragment shader在片段着色器中使用光的简单方法
【发布时间】:2013-12-19 16:58:27
【问题描述】:

我有一个 Collada 对象,我将每个 Three.js 加载到我的场景中。 现在我想改变模型的一些顶点位置 顶点着色器,这没问题。 但是有了这个,我必须跳过导出的 collada 材料并采取 着色器材质。 现在的问题是我必须计算完整的照明 我的片段着色器中的场景。 之前在collada材质的情况下,完整的光照是由框架使用定向光和半球光来计算的。

所以我的问题是,如果有一个解决方案,我可以让 fragmentShader 保持不变并且所有颜色的计算就像我不使用 ShaderMaterial 一样。

我尝试使用 THREE.ShaderLib 并仅传递 phong 着色器的 fragmentShader 和我自己的vertexShader。但这只会给出两个着色器中定义的变量不同的错误。

【问题讨论】:

    标签: three.js webgl


    【解决方案1】:

    很遗憾,你是对的。您必须创建自己的ShaderMaterial,并且合并场景照明会很乏味。

    如果您的场景照明不是那么重要,您可以在片段着色器中的相机位置添加一些环境光和单个光。

    如果您的场景照明很重要,那么您需要设置ShaderMaterial 参数lights: true,您将可以访问顶点和片段着色器中的场景灯光制服。

    three.js r.63

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多