|
|
@@ -133,7 +133,9 @@ class VaryingNode extends Node {
|
|
|
const properties = builder.getNodeProperties( this );
|
|
|
const varying = this.setupVarying( builder );
|
|
|
|
|
|
- if ( properties.propertyName === undefined ) {
|
|
|
+ const needsReassign = builder.shaderStage === 'fragment' && properties.reassignPosition === true && builder.context.needsPositionReassign;
|
|
|
+
|
|
|
+ if ( properties.propertyName === undefined || needsReassign ) {
|
|
|
|
|
|
const type = this.getNodeType( builder );
|
|
|
const propertyName = builder.getPropertyName( varying, NodeShaderStage.VERTEX );
|
|
|
@@ -143,6 +145,17 @@ class VaryingNode extends Node {
|
|
|
|
|
|
properties.propertyName = propertyName;
|
|
|
|
|
|
+ if ( needsReassign ) {
|
|
|
+
|
|
|
+ // once reassign varying in fragment stage
|
|
|
+ properties.reassignPosition = false;
|
|
|
+
|
|
|
+ } else if ( properties.reassignPosition === undefined && builder.context.isPositionNodeInput ) {
|
|
|
+
|
|
|
+ properties.reassignPosition = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return builder.getPropertyName( varying );
|