-
-
Notifications
You must be signed in to change notification settings - Fork 36.1k
Description
Description of the problem
basically, area lights do not work with npm/node module resolution, see:
simplified: https://codesandbox.io/s/three-fibre-userender-test-rohv5
raw threejs arealight demo: https://codesandbox.io/s/dreamy-platform-3jpim
why
all files under examples/jsm pull from ../../../build/three.module.js instead of three, which is arguably not correct. it will pull threejs two times in bundling systems that do not follow package.json:module (but "main" instead, which leads to build/three.js). it then creates two separate namespaces. uniforms.init() ends up writing to the wrong one.
solution
this is how a typical jsm file should look:
import {
ClampToEdgeWrapping,
DataTexture,
FloatType,
LinearFilter,
NearestFilter,
RGBAFormat,
ShaderLib,
UVMapping,
UniformsLib
} from "three";that's how any other library works. i have never seen library that relies on a distro file - this has obvious pitfalls. i understand that this was made to make the html demos work, but imo this is a hack, and it now impacts production usage.
Three.js version
- r107
Browser
- Chrome
OS
- macOS