Skip to content

Commit 686b93f

Browse files
authored
TSL Transpiler: Add support for discard. (#30538)
1 parent 82c9bb0 commit 686b93f

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

examples/jsm/transpiler/AST.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,16 @@ export class Return {
204204

205205
}
206206

207+
export class Discard {
208+
209+
constructor() {
210+
211+
this.isDiscard = true;
212+
213+
}
214+
215+
}
216+
207217
export class Accessor {
208218

209219
constructor( property ) {

examples/jsm/transpiler/GLSLDecoder.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Program, FunctionDeclaration, For, AccessorElements, Ternary, Varying, DynamicElement, StaticElement, FunctionParameter, Unary, Conditional, VariableDeclaration, Operator, Number, String, FunctionCall, Return, Accessor, Uniform } from './AST.js';
1+
import { Program, FunctionDeclaration, For, AccessorElements, Ternary, Varying, DynamicElement, StaticElement, FunctionParameter, Unary, Conditional, VariableDeclaration, Operator, Number, String, FunctionCall, Return, Accessor, Uniform, Discard } from './AST.js';
22

33
const unaryOperators = [
44
'+', '-', '~', '!', '++', '--'
@@ -489,6 +489,10 @@ class GLSLDecoder {
489489

490490
return new Return( this.parseExpressionFromTokens( tokens.slice( 1 ) ) );
491491

492+
} else if ( firstToken.str === 'discard' ) {
493+
494+
return new Discard();
495+
492496
}
493497

494498
const secondToken = tokens[ 1 ];

examples/jsm/transpiler/TSLEncoder.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,12 @@ class TSLEncoder {
244244

245245
}
246246

247+
} else if ( node.isDiscard ) {
248+
249+
this.addImport( 'Discard' );
250+
251+
code = 'Discard()';
252+
247253
} else if ( node.isAccessorElements ) {
248254

249255
code = this.emitExpression( node.object );

0 commit comments

Comments
 (0)