From 8a1c60116646cd92bf86e91b8b437ed536ab99f6 Mon Sep 17 00:00:00 2001 From: sunag Date: Tue, 29 Jan 2019 17:51:26 -0200 Subject: [PATCH] automatic float and vector convertion to boolean and vice versa --- examples/js/nodes/core/NodeBuilder.js | 21 ++++++++++++++----- .../js/nodes/materials/nodes/StandardNode.js | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/examples/js/nodes/core/NodeBuilder.js b/examples/js/nodes/core/NodeBuilder.js index 1277ecdba0..3cc8a9568a 100644 --- a/examples/js/nodes/core/NodeBuilder.js +++ b/examples/js/nodes/core/NodeBuilder.js @@ -821,28 +821,39 @@ NodeBuilder.prototype = { case 'f <- v2' : return code + '.x'; case 'f <- v3' : return code + '.x'; case 'f <- v4' : return code + '.x'; - case 'f <- i' : return 'float( ' + code + ' )'; + case 'f <- i' : + case 'f <- b' : return 'float( ' + code + ' )'; case 'v2 <- f' : return 'vec2( ' + code + ' )'; case 'v2 <- v3': return code + '.xy'; case 'v2 <- v4': return code + '.xy'; - case 'v2 <- i' : return 'vec2( float( ' + code + ' ) )'; + case 'v2 <- i' : + case 'v2 <- b' : return 'vec2( float( ' + code + ' ) )'; case 'v3 <- f' : return 'vec3( ' + code + ' )'; case 'v3 <- v2': return 'vec3( ' + code + ', 0.0 )'; case 'v3 <- v4': return code + '.xyz'; - case 'v3 <- i' : return 'vec2( float( ' + code + ' ) )'; + case 'v3 <- i' : + case 'v3 <- b' : return 'vec2( float( ' + code + ' ) )'; case 'v4 <- f' : return 'vec4( ' + code + ' )'; case 'v4 <- v2': return 'vec4( ' + code + ', 0.0, 1.0 )'; case 'v4 <- v3': return 'vec4( ' + code + ', 1.0 )'; - case 'v4 <- i' : return 'vec4( float( ' + code + ' ) )'; + case 'v4 <- i' : + case 'v4 <- b' : return 'vec4( float( ' + code + ' ) )'; - case 'i <- f' : return 'int( ' + code + ' )'; + case 'i <- f' : + case 'i <- b' : return 'int( ' + code + ' )'; case 'i <- v2' : return 'int( ' + code + '.x )'; case 'i <- v3' : return 'int( ' + code + '.x )'; case 'i <- v4' : return 'int( ' + code + '.x )'; + case 'b <- f' : return '( ' + code + ' != 0.0 )'; + case 'b <- v2' : return '( ' + code + ' != vec2( 0.0 ) )'; + case 'b <- v3' : return '( ' + code + ' != vec3( 0.0 ) )'; + case 'b <- v4' : return '( ' + code + ' != vec4( 0.0 ) )'; + case 'b <- i' : return '( ' + code + ' != 0 )'; + } return code; diff --git a/examples/js/nodes/materials/nodes/StandardNode.js b/examples/js/nodes/materials/nodes/StandardNode.js index df71ee0187..97ec2483b3 100644 --- a/examples/js/nodes/materials/nodes/StandardNode.js +++ b/examples/js/nodes/materials/nodes/StandardNode.js @@ -143,7 +143,7 @@ StandardNode.prototype.build = function ( builder ) { // build code - var mask = this.mask ? this.mask.buildCode( builder, 'f' ) : undefined; + var mask = this.mask ? this.mask.buildCode( builder, 'b' ) : undefined; var color = this.color.buildCode( builder, 'c', { slot: 'color', context: contextGammaOnly } ); var roughness = this.roughness.buildCode( builder, 'f' ); -- GitLab