@@ -457,8 +457,11 @@ Object.assign(MeshInstance.prototype, {
457
457
* if set on Material this mesh instance uses for rendering.
458
458
* @param {string } name - The name of the parameter to set.
459
459
* @param {number|number[]|pc.Texture } data - The value for the specified parameter.
460
+ * @param {number } [passFlags] - Mask describing which passes the material should be included in.
460
461
*/
461
- setParameter : function ( name , data ) {
462
+ setParameter : function ( name , data , passFlags ) {
463
+
464
+ if ( passFlags === undefined ) passFlags = - 524285 ; // All bits set except 2 - 18 range
462
465
463
466
if ( data === undefined && typeof name === 'object' ) {
464
467
var uniformObject = name ;
@@ -475,10 +478,12 @@ Object.assign(MeshInstance.prototype, {
475
478
var param = this . parameters [ name ] ;
476
479
if ( param ) {
477
480
param . data = data ;
481
+ param . passFlags = passFlags ;
478
482
} else {
479
483
this . parameters [ name ] = {
480
484
scopeId : null ,
481
- data : data
485
+ data : data ,
486
+ passFlags : passFlags
482
487
} ;
483
488
}
484
489
} ,
@@ -496,14 +501,16 @@ Object.assign(MeshInstance.prototype, {
496
501
} ,
497
502
498
503
// used to apply parameters from this mesh instance into scope of uniforms, called internally by forward-renderer
499
- setParameters : function ( device ) {
504
+ setParameters : function ( device , passFlag ) {
500
505
var parameter , parameters = this . parameters ;
501
506
for ( var paramName in parameters ) {
502
507
parameter = parameters [ paramName ] ;
503
- if ( ! parameter . scopeId ) {
504
- parameter . scopeId = device . scope . resolve ( paramName ) ;
508
+ if ( parameter . passFlags & passFlag ) {
509
+ if ( ! parameter . scopeId ) {
510
+ parameter . scopeId = device . scope . resolve ( paramName ) ;
511
+ }
512
+ parameter . scopeId . setValue ( parameter . data ) ;
505
513
}
506
- parameter . scopeId . setValue ( parameter . data ) ;
507
514
}
508
515
}
509
516
} ) ;
0 commit comments