From c52a0e7f476d6c8d082b3f40781354067a9abad9 Mon Sep 17 00:00:00 2001 From: Maksims Mihejevs Date: Fri, 5 Aug 2016 15:10:29 +0100 Subject: [PATCH] add lightmapMode scene setting --- src/framework/application.js | 2 +- src/graphics/program-lib/chunks/biasRcvPlane.frag | 5 ++--- src/scene/scene.js | 8 ++++++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/framework/application.js b/src/framework/application.js index d8a7023ef64..3bb54a3b313 100644 --- a/src/framework/application.js +++ b/src/framework/application.js @@ -1075,7 +1075,7 @@ pc.extend(pc, function () { }, _firstBake: function() { - this.lightmapper.bake(); + this.lightmapper.bake(null, this.scene.lightmapMode); }, /** diff --git a/src/graphics/program-lib/chunks/biasRcvPlane.frag b/src/graphics/program-lib/chunks/biasRcvPlane.frag index 0cf6f4976ae..bca39ec4a83 100644 --- a/src/graphics/program-lib/chunks/biasRcvPlane.frag +++ b/src/graphics/program-lib/chunks/biasRcvPlane.frag @@ -7,8 +7,8 @@ vec2 computeReceiverPlaneDepthBias(vec3 texCoordDX, vec3 texCoordDY) { } float getShadowBias(float resolution, float maxBias) { - vec3 shadowPosDX = dFdx(dShadowCoord) + vec3(0.00001); - vec3 shadowPosDY = dFdy(dShadowCoord) + vec3(0.00001); + vec3 shadowPosDX = dFdx(dShadowCoord); + vec3 shadowPosDY = dFdy(dShadowCoord); vec2 texelSize = vec2(1.0 / resolution); vec2 receiverPlaneDepthBias = computeReceiverPlaneDepthBias(shadowPosDX, shadowPosDY); @@ -16,4 +16,3 @@ float getShadowBias(float resolution, float maxBias) { return -min(fractionalSamplingError, maxBias); } - diff --git a/src/scene/scene.js b/src/scene/scene.js index 85b69b7cbf6..544977c8bb4 100644 --- a/src/scene/scene.js +++ b/src/scene/scene.js @@ -258,6 +258,12 @@ pc.extend(pc, function () { * Only valid for prefiltered cubemap skyboxes. * @property {Number} lightmapSizeMultiplier Lightmap resolution multiplier * @property {Number} lightmapMaxResolution Maximum lightmap resolution + * @property {Number} lightmapMode Baking mode, with possible values: + * + * Only lights with bakeDir=true will be used for generating the dominant light direction. */ var Scene = function Scene() { this.root = null; @@ -295,6 +301,7 @@ pc.extend(pc, function () { this.lightmapSizeMultiplier = 1; this.lightmapMaxResolution = 2048; + this.lightmapMode = pc.BAKE_COLORDIR; this._stats = { meshInstances: 0, @@ -490,6 +497,7 @@ pc.extend(pc, function () { this.toneMapping = settings.render.tonemapping; this.lightmapSizeMultiplier = settings.render.lightmapSizeMultiplier; this.lightmapMaxResolution = settings.render.lightmapMaxResolution; + this.lightmapMode = settings.render.lightmapMode; this.exposure = settings.render.exposure; this.skyboxIntensity = settings.render.skyboxIntensity===undefined? 1 : settings.render.skyboxIntensity; this.skyboxMip = settings.render.skyboxMip===undefined? 0 : settings.render.skyboxMip;