|
@@ -42,6 +42,8 @@ import "../../Shaders/pbr.vertex";
|
|
|
import { EffectFallbacks } from '../effectFallbacks';
|
|
|
import { IMaterialDetailMapDefines, DetailMapConfiguration } from '../material.detailMapConfiguration';
|
|
|
|
|
|
+declare type PrePassRenderer = import("../../Rendering/prePassRenderer").PrePassRenderer;
|
|
|
+
|
|
|
const onCreatedEffectParameters = { effect: null as unknown as Effect, subMesh: null as unknown as Nullable<SubMesh> };
|
|
|
|
|
|
/**
|
|
@@ -676,14 +678,10 @@ export abstract class PBRBaseMaterial extends PushMaterial {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Should this material render to several textures at once
|
|
|
+ * Can this material render to several textures at once
|
|
|
*/
|
|
|
- public get shouldRenderToMRT() {
|
|
|
- const ppr = this.getScene().prePassRenderer;
|
|
|
-
|
|
|
- return (!!ppr &&
|
|
|
- (ppr.materialsShouldRenderGeometry ||
|
|
|
- ppr.materialsShouldRenderIrradiance));
|
|
|
+ public get canRenderToMRT() {
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1308,7 +1306,7 @@ export abstract class PBRBaseMaterial extends PushMaterial {
|
|
|
onError: onError,
|
|
|
indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS },
|
|
|
processFinalCode: csnrOptions.processFinalCode,
|
|
|
- multiTarget: this.shouldRenderToMRT
|
|
|
+ multiTarget: defines.PREPASS
|
|
|
}, engine);
|
|
|
}
|
|
|
|
|
@@ -1324,7 +1322,7 @@ export abstract class PBRBaseMaterial extends PushMaterial {
|
|
|
MaterialHelper.PrepareDefinesForMultiview(scene, defines);
|
|
|
|
|
|
// PrePass
|
|
|
- MaterialHelper.PrepareDefinesForPrePass(scene, defines, this.shouldRenderToMRT);
|
|
|
+ MaterialHelper.PrepareDefinesForPrePass(scene, defines, this.canRenderToMRT);
|
|
|
|
|
|
// Textures
|
|
|
defines.METALLICWORKFLOW = this.isMetallicWorkflow();
|
|
@@ -2229,6 +2227,19 @@ export abstract class PBRBaseMaterial extends PushMaterial {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Sets the required values to the prepass renderer.
|
|
|
+ * @param prePassRenderer defines the prepass renderer to setup
|
|
|
+ */
|
|
|
+ public setPrePassRenderer(prePassRenderer: PrePassRenderer): boolean {
|
|
|
+ if (this.subSurface.isScatteringEnabled) {
|
|
|
+ prePassRenderer.subSurfaceConfiguration.enabled = true;
|
|
|
+ prePassRenderer.materialsShouldRenderIrradiance = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Disposes the resources of the material.
|
|
|
* @param forceDisposeEffect - Forces the disposal of effects.
|
|
|
* @param forceDisposeTextures - Forces the disposal of all textures.
|