Skip to content

Commit ad6b0c9

Browse files
LeviPesindonmccurdy
authored andcommitted
Add ivec, uvec, bvec, imat, umat, and bmat (mrdoob#23646)
* Add ivec, uvec, bvec, imat, umat, and bmat * Fix * Change the way how it is done * Fix * Another fix * Fix bvec
1 parent cf98a00 commit ad6b0c9

File tree

3 files changed

+45
-5
lines changed

3 files changed

+45
-5
lines changed

examples/jsm/nodes/ShaderNode.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export const label = ( node, name ) => {
220220

221221
export const temp = ( node ) => nodeObject( new VarNode( nodeObject( node ) ) );
222222

223-
const ConvertType = function ( nodeClass, type, valueClass = null, valueComponents = 1 ) {
223+
const ConvertType = function ( nodeClass, type, valueClass = null, valueComponents = 1, convertAfter = false ) {
224224

225225
return ( ...params ) => {
226226

@@ -244,7 +244,9 @@ const ConvertType = function ( nodeClass, type, valueClass = null, valueComponen
244244

245245
const val = ( ( valueClass === null ) || ( params[ 0 ] instanceof valueClass ) ) ? params[ 0 ] : new valueClass().set( ...params );
246246

247-
return nodeObject( new nodeClass( val ).setConst( true ) );
247+
const node = nodeObject( new nodeClass( val ).setConst( true ) );
248+
249+
return convertAfter === true ? nodeObject( new ConvertNode( node, type ) ) : node;
248250

249251
};
250252

@@ -257,11 +259,29 @@ export const bool = new ConvertType( BoolNode, 'bool' );
257259
export const color = new ConvertType( ColorNode, 'color', Color );
258260

259261
export const vec2 = new ConvertType( Vector2Node, 'vec2', Vector2, 2 );
262+
export const ivec2 = new ConvertType( Vector2Node, 'ivec2', Vector2, 2, true );
263+
export const uvec2 = new ConvertType( Vector2Node, 'uvec2', Vector2, 2, true );
264+
export const bvec2 = new ConvertType( Vector2Node, 'bvec2', Vector2, 2, true );
265+
260266
export const vec3 = new ConvertType( Vector3Node, 'vec3', Vector3, 3 );
267+
export const ivec3 = new ConvertType( Vector3Node, 'ivec3', Vector3, 3, true );
268+
export const uvec3 = new ConvertType( Vector3Node, 'uvec3', Vector3, 3, true );
269+
export const bvec3 = new ConvertType( Vector3Node, 'bvec3', Vector3, 3, true );
270+
261271
export const vec4 = new ConvertType( Vector4Node, 'vec4', Vector4, 4 );
272+
export const ivec4 = new ConvertType( Vector4Node, 'ivec4', Vector4, 4, true );
273+
export const uvec4 = new ConvertType( Vector4Node, 'uvec4', Vector4, 4, true );
274+
export const bvec4 = new ConvertType( Vector4Node, 'bvec4', Vector4, 4, true );
262275

263276
export const mat3 = new ConvertType( Matrix3Node, 'mat3', Matrix3 );
277+
export const imat3 = new ConvertType( Matrix3Node, 'imat3', Matrix3, 1, true );
278+
export const umat3 = new ConvertType( Matrix3Node, 'umat3', Matrix3, 1, true );
279+
export const bmat3 = new ConvertType( Matrix3Node, 'bmat3', Matrix3, 1, true );
280+
264281
export const mat4 = new ConvertType( Matrix4Node, 'mat4', Matrix4 );
282+
export const imat4 = new ConvertType( Matrix4Node, 'imat4', Matrix4, 1, true );
283+
export const umat4 = new ConvertType( Matrix4Node, 'umat4', Matrix4, 1, true );
284+
export const bmat4 = new ConvertType( Matrix4Node, 'bmat4', Matrix4, 1, true );
265285

266286
export const join = ( ...params ) => {
267287

examples/jsm/nodes/core/NodeBuilder.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ export const shaderStages = [ 'fragment', 'vertex' ];
1212
export const vector = [ 'x', 'y', 'z', 'w' ];
1313

1414
const toFloat = ( value ) => {
15+
16+
value = Number( value );
1517

1618
return value + ( value % 1 ? '' : '.0' );
1719

@@ -286,7 +288,7 @@ class NodeBuilder {
286288

287289
getVectorFromMatrix( type ) {
288290

289-
return 'vec' + type.slice( 3 );
291+
return type.replace( 'mat', 'vec' );
290292

291293
}
292294

examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,31 @@ const wgslTypeLib = {
3333
int: 'i32',
3434
uint: 'u32',
3535
bool: 'bool',
36+
3637
vec2: 'vec2<f32>',
38+
ivec2: 'vec2<i32>',
39+
uvec2: 'vec2<u32>',
40+
bvec2: 'vec2<bool>',
41+
3742
vec3: 'vec3<f32>',
43+
ivec3: 'vec3<i32>',
44+
uvec3: 'vec3<u32>',
45+
bvec3: 'vec3<bool>',
46+
3847
vec4: 'vec4<f32>',
48+
ivec4: 'vec4<i32>',
3949
uvec4: 'vec4<u32>',
40-
bvec3: 'vec3<bool>',
50+
bvec4: 'vec4<bool>',
51+
4152
mat3: 'mat3x3<f32>',
42-
mat4: 'mat4x4<f32>'
53+
imat3: 'mat3x3<i32>',
54+
umat3: 'mat3x3<u32>',
55+
bmat3: 'mat3x3<bool>',
56+
57+
mat4: 'mat4x4<f32>',
58+
imat4: 'mat4x4<i32>',
59+
umat4: 'mat4x4<u32>',
60+
bmat4: 'mat4x4<bool>'
4361
};
4462

4563
const wgslMethods = {

0 commit comments

Comments
 (0)