Skip to content

fix(uniforms): convert uniform values and numeric sequences with ToNumber - #27

Merged
dsafdsaf132 merged 1 commit into
dsafdsaf132:mainfrom
jerryryle:fix/webidl-number-conversion
Oct 26, 2026
Merged

dsafdsaf132 merged 1 commit into
dsafdsaf132:mainfrom
jerryryle:fix/webidl-number-conversion

Conversation

@jerryryle

Copy link
Copy Markdown
Contributor

uniform1i(loc, true) threw "Argument is not a number!" and uniform2iv(loc, [true, false]) threw "A number was expected", where browsers convert both, as WebIDL requires. three.js passes booleans for its bool uniforms, so every lit material failed.

GetUniformValueParam and the plain-array branch of GetArrayLikeBuffer now convert a non-number with napi_coerce_to_number. null and undefined keep their existing handling, typed arrays are untouched, and a Symbol still throws TypeError. The array branch also serves bufferData, vertexAttrib*v and the other setters that take a sequence, which browsers convert the same way.

webgl2-smoke gains testUniformValueConversion, which fails on the old code and passes on this one.

…mber

uniform1i(loc, true) threw "Argument is not a number!" and
uniform2iv(loc, [true, false]) threw "A number was expected", where browsers
convert both, as WebIDL requires. three.js passes booleans for its bool
uniforms, so every lit material failed.

GetUniformValueParam and the plain-array branch of GetArrayLikeBuffer now
convert a non-number with napi_coerce_to_number. null and undefined keep their
existing handling, typed arrays are untouched, and a Symbol still throws
TypeError. The array branch also serves bufferData, vertexAttrib*v and the
other setters that take a sequence, which browsers convert the same way.

webgl2-smoke gains testUniformValueConversion, which fails on the old code and
passes on this one.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@dsafdsaf132
dsafdsaf132 merged commit 74c4494 into dsafdsaf132:main Oct 26, 2026
7 checks passed
@jerryryle
jerryryle deleted the fix/webidl-number-conversion branch October 26, 2026 11:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants