Przeglądaj źródła

cleaned some stuff

Benjamin Guignabert 5 lat temu
rodzic
commit
3da40d0f6c

+ 0 - 8
src/Engines/thinEngine.ts

@@ -1345,14 +1345,6 @@ export class ThinEngine {
         if (texture._MSAAFramebuffer) {
             this.unBindMultiColorAttachmentFramebuffer(texture._textureCount!, texture._textureArray!, disableGenerateMipMaps, onBeforeUnbind);
             return;
-        //     gl.bindFramebuffer(gl.READ_FRAMEBUFFER, texture._MSAAFramebuffer);
-        //     gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, texture._framebuffer);
-        //     gl.readBuffer(gl.COLOR_ATTACHMENT0);
-        //     gl.drawBuffers([gl.COLOR_ATTACHMENT0]);
-        //     gl.blitFramebuffer(0, 0, texture.width, texture.height,
-        //         0, 0, texture.width, texture.height,
-        //         gl.COLOR_BUFFER_BIT, gl.NEAREST);
-        // }
         }
 
         if (texture.generateMipMaps && !disableGenerateMipMaps && !texture.isCube) {

+ 0 - 2
src/Materials/Background/backgroundMaterial.ts

@@ -153,8 +153,6 @@ class BackgroundMaterialDefines extends MaterialDefines implements IImageProcess
     public CLIPPLANE6 = false;
     public POINTSIZE = false;
     public FOG = false;
-    public HIGH_DEFINITION_PIPELINE = false;
-    public SCENE_MRT_COUNT = 0;
     public NORMAL = false;
     public NUM_BONE_INFLUENCERS = 0;
     public BonesPerMesh = 0;

+ 1 - 1
src/Materials/PBR/pbrBaseMaterial.ts

@@ -161,7 +161,7 @@ export class PBRMaterialDefines extends MaterialDefines
     public INSTANCES = false;
     public THIN_INSTANCES = false;
 
-    public HIGH_DEFINITION_PIPELINE = false;
+    public PREPASS = false;
     public SCENE_MRT_COUNT = 0;
 
     public NUM_BONE_INFLUENCERS = 0;

+ 1 - 1
src/Materials/imageProcessingConfiguration.ts

@@ -449,7 +449,7 @@ export class ImageProcessingConfiguration {
             defines.COLORGRADING = false;
             defines.COLORGRADING3D = false;
             defines.IMAGEPROCESSING = false;
-            defines.IMAGEPROCESSINGPOSTPROCESS = (this.applyByPostProcess && this._isEnabled);
+            defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;
             return;
         }
 

+ 2 - 2
src/Materials/material.ts

@@ -234,7 +234,7 @@ export class Material implements IAnimatable {
      * If the material should be rendered to several textures with MRT extension
      */
     public get shouldRenderToMRT() : boolean {
-        // By default, shader are not compatible with MRTs
+        // By default, shaders are not compatible with MRTs
         // Base classes should override that if their shader supports MRT
         return false;
     }
@@ -1247,7 +1247,7 @@ export class Material implements IAnimatable {
             return;
         }
 
-        const prePassRenderer = this.getScene().enablePrepassRenderer();
+        const prePassRenderer = this.getScene().enablePrePassRenderer();
         
         if (prePassRenderer) {
             prePassRenderer.markAsDirty();

+ 6 - 5
src/Materials/materialHelper.ts

@@ -296,21 +296,22 @@ export class MaterialHelper {
     }
 
     /**
-     * Prepares the defines related to deferred shading
+     * Prepares the defines related to the prepass
      * @param scene The scene we are intending to draw
      * @param defines The defines to update
+     * @param shouldRenderToMRT Indicates if this material renders to several textures in the prepass
      */
     public static PrepareDefinesForPrePass(scene: Scene, defines: any, shouldRenderToMRT: boolean) {
-        var previousDeferred = defines.HIGH_DEFINITION_PIPELINE;
+        var previousDeferred = defines.PREPASS;
 
         if (scene.prePassRenderer && shouldRenderToMRT) {
-            defines.HIGH_DEFINITION_PIPELINE = true;
+            defines.PREPASS = true;
             defines.SCENE_MRT_COUNT = scene.prePassRenderer.mrtCount;
         } else {
-            defines.HIGH_DEFINITION_PIPELINE = false;
+            defines.PREPASS = false;
         }
 
-        if (defines.HIGH_DEFINITION_PIPELINE != previousDeferred) {
+        if (defines.PREPASS != previousDeferred) {
             defines.markAsUnprocessed();
             defines.markAsImageProcessingDirty();
         }

+ 1 - 1
src/Materials/standardMaterial.ts

@@ -125,7 +125,7 @@ export class StandardMaterialDefines extends MaterialDefines implements IImagePr
     public ALPHATEST_AFTERALLALPHACOMPUTATIONS = false;
     public ALPHABLEND = true;
 
-    public HIGH_DEFINITION_PIPELINE = false;
+    public PREPASS = false;
     public SCENE_MRT_COUNT = 0;
 
     public RGBDLIGHTMAP = false;

+ 1 - 1
src/PostProcesses/SubSurfaceScatteringPostProcess.ts

@@ -34,7 +34,7 @@ export class SubSurfaceScatteringPostProcess extends PostProcess {
                 return;
             }
             var texelSize = this.texelSize;
-            effect.setFloat("metersPerUnit", scene.metersPerUnit);
+            effect.setFloat("metersPerUnit", scene.prePassRenderer.metersPerUnit);
             effect.setFloat2("texelSize", texelSize.x, texelSize.y);
             effect.setTexture("irradianceSampler", scene.prePassRenderer.prePassRT.textures[1]);
             effect.setTexture("depthSampler", scene.prePassRenderer.prePassRT.textures[2]);

+ 6 - 0
src/Rendering/prePassRenderer.ts

@@ -36,6 +36,12 @@ export class PrePassRenderer {
     public ssFilterRadii: number[] = [];
     public ssDiffusionD: number[] = [];
 
+    /**
+     * Defines the ratio real world => scene units.
+     * Used for subsurface scattering
+     */
+    public metersPerUnit: number = 1;
+
     public imageProcessingPostProcess: ImageProcessingPostProcess;
     public subSurfaceScatteringPostProcess: SubSurfaceScatteringPostProcess;
     private _enabled: boolean = false;

+ 4 - 4
src/Rendering/prePassRendererSceneComponent.ts

@@ -19,12 +19,12 @@ declare module "../abstractScene" {
          * Enables the prepass and associates it with the scene
          * @returns the PrePassRenderer
          */
-        enablePrepassRenderer(ratio?: number): Nullable<PrePassRenderer>;
+        enablePrePassRenderer(ratio?: number): Nullable<PrePassRenderer>;
 
         /**
          * Disables the prepass associated with the scene
          */
-        disablePrepassRenderer(): void;
+        disablePrePassRenderer(): void;
 
         ssDiffusionProfileColors: Color3[];
     }
@@ -43,7 +43,7 @@ Object.defineProperty(Scene.prototype, "prePassRenderer", {
     configurable: true
 });
 
-Scene.prototype.enablePrepassRenderer = function(ratio: number = 1): Nullable<PrePassRenderer> {
+Scene.prototype.enablePrePassRenderer = function(ratio: number = 1): Nullable<PrePassRenderer> {
     if (this._prePassRenderer) {
         return this._prePassRenderer;
     }
@@ -56,7 +56,7 @@ Scene.prototype.enablePrepassRenderer = function(ratio: number = 1): Nullable<Pr
     return this._prePassRenderer;
 };
 
-Scene.prototype.disablePrepassRenderer = function(): void {
+Scene.prototype.disablePrePassRenderer = function(): void {
     if (!this._prePassRenderer) {
         return;
     }

+ 0 - 7
src/Shaders/ShadersInclude/deferredDefaultOutput.fx

@@ -1,7 +0,0 @@
-#ifdef HIGH_DEFINITION_PIPELINE
-	// putting that in a loop won't compile
-	gl_FragData[0] = gl_FragColor;
-	gl_FragData[1] = vec4(0.0, 0.0, 0.0, 0.0);
-	gl_FragData[2] = vec4(0.0, 0.0, 0.0, 0.0);
-	gl_FragData[3] = vec4(0.0, 0.0, 0.0, 0.0);
-#endif

+ 1 - 14
src/Shaders/ShadersInclude/diffusionProfile.fx

@@ -1,16 +1,3 @@
 uniform vec3 diffusionS[5];
 uniform float diffusionD[5];
-uniform float filterRadii[5];
-
-// struct DiffusionProfile
-// {
-//   vec3 S;
-//   float d;
-//   float filterRadius;
-// };
-
-// DiffusionProfile diffusionProfiles[3] = DiffusionProfile[3](
-// 	DiffusionProfile(vec3(1., 1., 1.), 1., 16.564398753373407), // neutral
-// 	DiffusionProfile(vec3(0.7568628, 0.32156864, 0.20000002), 0.7568628, 12.536977220794705), // skin
-// 	DiffusionProfile(vec3(0.7568628, 0.7019608, 0.24313727), 0.7568628, 12.536977220794705) // foliage
-// );
+uniform float filterRadii[5];

+ 0 - 11
src/Shaders/ShadersInclude/helperFunctions.fx

@@ -88,17 +88,6 @@ float getLuminance(vec3 color)
     return clamp(dot(color, LuminanceEncodeApprox), 0., 1.);
 }
 
-vec3 tagLightingForSSS(vec3 color) {
-    color.b = max(color.b, HALF_MIN);
-
-    return color;
-}
-
-bool testLightingForSSS(vec3 color)
-{
-    return color.b > 0.;
-}
-
 // https://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl
 float getRand(vec2 seed) {
     return fract(sin(dot(seed.xy ,vec2(12.9898,78.233))) * 43758.5453);

+ 1 - 0
src/Shaders/ShadersInclude/pbrBlockImageProcessing.fx

@@ -6,6 +6,7 @@
     // Alway run to ensure we are going back to gamma space.
     finalColor = applyImageProcessing(finalColor);
 #endif
+
     finalColor.a *= visibility;
 
 #ifdef PREMULTIPLYALPHA

+ 1 - 1
src/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.fx

@@ -29,6 +29,6 @@ varying vec3 vPositionW;
     varying vec4 vColor;
 #endif
 
-#ifdef HIGH_DEFINITION_PIPELINE
+#ifdef PREPASS
 	varying vec3 vViewPos;
 #endif

+ 1 - 1
src/Shaders/ShadersInclude/deferredDeclaration.fx

@@ -1,4 +1,4 @@
-#ifdef HIGH_DEFINITION_PIPELINE
+#ifdef PREPASS
 #if __VERSION__ >= 200
 #extension GL_EXT_draw_buffers : require
 layout(location = 0) out vec4 glFragData[{X}];

+ 10 - 0
src/Shaders/ShadersInclude/subSurfaceScatteringFunctions.fx

@@ -0,0 +1,10 @@
+vec3 tagLightingForSSS(vec3 color) {
+    color.b = max(color.b, HALF_MIN);
+
+    return color;
+}
+
+bool testLightingForSSS(vec3 color)
+{
+    return color.b > 0.;
+}

+ 1 - 6
src/Shaders/default.fragment.fx

@@ -44,8 +44,6 @@ varying vec4 vColor;
 #include<lightsFragmentFunctions>
 #include<shadowsFragmentFunctions>
 
-// #include<deferredDeclaration>[SCENE_MRT_COUNT]
-
 // Samplers
 #ifdef DIFFUSE
 	#if DIFFUSEDIRECTUV == 1
@@ -476,9 +474,6 @@ color.rgb = max(color.rgb, 0.);
 #endif
 
 #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
-
-gl_FragColor = color;
-
-// #include<deferredDefaultOutput>
+	gl_FragColor = color;
 
 }

+ 3 - 2
src/Shaders/pbr.fragment.fx

@@ -14,7 +14,7 @@
 
 precision highp float;
 
-#include<deferredDeclaration>[SCENE_MRT_COUNT]
+#include<prePassDeclaration>[SCENE_MRT_COUNT]
 
 // Forces linear space for image processing
 #ifndef FROMLINEARSPACE
@@ -33,6 +33,7 @@ precision highp float;
 
 // Helper Functions
 #include<helperFunctions>
+#include<subSurfaceScatteringFunctions>
 #include<importanceSampling>
 #include<pbrHelperFunctions>
 #include<imageProcessingFunctions>
@@ -498,7 +499,7 @@ void main(void) {
 
     #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
 
-#ifdef HIGH_DEFINITION_PIPELINE
+#ifdef PREPASS
     vec3 irradiance = finalDiffuse;
     #ifndef UNLIT
         #ifdef REFLECTION

+ 2 - 2
src/Shaders/pbr.vertex.fx

@@ -34,7 +34,7 @@ attribute vec4 color;
 // Uniforms
 #include<instancesDeclaration>
 
-#ifdef HIGH_DEFINITION_PIPELINE
+#ifdef PREPASS
 varying vec3 vViewPos;
 #endif
 
@@ -177,7 +177,7 @@ void main(void) {
 
     vec4 worldPos = finalWorld * vec4(positionUpdated, 1.0);
     vPositionW = vec3(worldPos);
-#ifdef HIGH_DEFINITION_PIPELINE
+#ifdef PREPASS
     vViewPos = (view * worldPos).rgb;
 #endif
 

+ 1 - 0
src/Shaders/subSurfaceScattering.fragment.fx

@@ -1,6 +1,7 @@
 // Samplers
 #include<fibonacci>
 #include<helperFunctions>
+#include<subSurfaceScatteringFunctions>
 #include<diffusionProfile>
 
 varying vec2 vUV;

+ 0 - 6
src/scene.ts

@@ -173,12 +173,6 @@ export class Scene extends AbstractScene implements IAnimatable {
     public ambientColor = new Color3(0, 0, 0);
 
     /**
-     * Defines the ratio real world => scene units.
-     * Used for subsurface scattering
-     */
-    public metersPerUnit: number = 1;
-
-    /**
      * This is use to store the default BRDF lookup for PBR materials in your scene.
      * It should only be one of the following (if not the default embedded one):
      * * For uncorrelated BRDF (pbr.brdf.useEnergyConservation = false and pbr.brdf.useSmithVisibilityHeightCorrelated = false) : https://assets.babylonjs.com/environments/uncorrelatedBRDF.dds