You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Three.js r131升级r132后着色器光照函数无匹配重载报错

Three.js r131升级r132片元着色器光照函数报错解决方案

问题原因

Three.js r132版本对内置着色器的光照工具函数做了不兼容更新,getDirectionalDirectLightIrradiance、getPointDirectLightIrradiance 两个函数的参数列表移除了geometry参数,你自定义着色器里仍然使用旧版3参数调用方式,因此找不到匹配的重载函数。

修复方法

把代码中调用这两个函数的行去掉geometry参数即可:

  • 原调用语句 getDirectionalDirectLightIrradiance(directionalLight, geometry, directLight); 修改为 getDirectionalDirectLightIrradiance(directionalLight, directLight);
  • 原调用语句 getPointDirectLightIrradiance(pointLight, geometry, directLight); 修改为 getPointDirectLightIrradiance(pointLight, directLight);

修改完成的完整代码如下:

IncidentLight directLight;

// Directional Light
#if NUM_DIR_LIGHTS > 0

    DirectionalLight directionalLight;

    for (int i = 0; i < NUM_DIR_LIGHTS; i++) {

        directionalLight = directionalLights[i];

        // 移除geometry参数
        getDirectionalDirectLightIrradiance(directionalLight, directLight);

        #ifdef USE_SHADOWMAP
            directLight.color *= all(bvec2(directionalLight.shadow, directLight.visible)) ? getShadow(directionalShadowMap[i], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[i]) : 1.0;
        #endif

        RE_Direct(directLight, geometry, material, reflectedLight);
    }

#endif

// Point Light
#if (NUM_POINT_LIGHTS > 0)

    PointLight pointLight;

    for (int i = 0; i < NUM_POINT_LIGHTS; i++) {

        pointLight = pointLights[i];

        // 移除geometry参数
        getPointDirectLightIrradiance(pointLight, directLight);

        #ifdef USE_SHADOWMAP
            directLight.color *= all(bvec2(pointLight.shadow, directLight.visible)) ? getPointShadow(pointShadowMap[i], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[i]) : 1.0;
        #endif

        RE_Direct(directLight, geometry, material, reflectedLight);
    }

#endif

内容的提问来源于stack exchange,提问作者kimbaudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:00:01