|
@@ -97,6 +97,11 @@ class Renderer extends h3d.scene.Renderer {
|
|
public var exposure(get,set) : Float;
|
|
public var exposure(get,set) : Float;
|
|
var debugShadowMapIndex = 1;
|
|
var debugShadowMapIndex = 1;
|
|
|
|
|
|
|
|
+ #if editor
|
|
|
|
+ var outline = new h3d.pass.ScreenFx(new hide.Renderer.ScreenOutline());
|
|
|
|
+ var outlineBlur = new h3d.pass.Blur(4);
|
|
|
|
+ #end
|
|
|
|
+
|
|
static var ALPHA : hxsl.Output = Swiz(Value("output.color"),[W]);
|
|
static var ALPHA : hxsl.Output = Swiz(Value("output.color"),[W]);
|
|
var output = new h3d.pass.Output("default",[
|
|
var output = new h3d.pass.Output("default",[
|
|
Value("output.color"),
|
|
Value("output.color"),
|
|
@@ -172,6 +177,10 @@ class Renderer extends h3d.scene.Renderer {
|
|
return output;
|
|
return output;
|
|
case "decal" #if MRT_low , "emissiveDecal" #end:
|
|
case "decal" #if MRT_low , "emissiveDecal" #end:
|
|
return decalsOutput;
|
|
return decalsOutput;
|
|
|
|
+ #if editor
|
|
|
|
+ case "highlight", "highlightBack":
|
|
|
|
+ return defaultPass;
|
|
|
|
+ #end
|
|
}
|
|
}
|
|
return super.getPassByName(name);
|
|
return super.getPassByName(name);
|
|
}
|
|
}
|
|
@@ -243,7 +252,7 @@ class Renderer extends h3d.scene.Renderer {
|
|
function renderPass(p:h3d.pass.Output, passes, ?sort) {
|
|
function renderPass(p:h3d.pass.Output, passes, ?sort) {
|
|
if ( cullingDistanceFactor > 0.0 )
|
|
if ( cullingDistanceFactor > 0.0 )
|
|
cullPassesWithDistance(passes, function(col) return col.inFrustum(ctx.camera.frustum));
|
|
cullPassesWithDistance(passes, function(col) return col.inFrustum(ctx.camera.frustum));
|
|
- else
|
|
|
|
|
|
+ else
|
|
cullPasses(passes, function(col) return col.inFrustum(ctx.camera.frustum));
|
|
cullPasses(passes, function(col) return col.inFrustum(ctx.camera.frustum));
|
|
p.draw(passes, sort);
|
|
p.draw(passes, sort);
|
|
passes.reset();
|
|
passes.reset();
|
|
@@ -400,6 +409,35 @@ class Renderer extends h3d.scene.Renderer {
|
|
}
|
|
}
|
|
|
|
|
|
function end() {
|
|
function end() {
|
|
|
|
+ #if editor
|
|
|
|
+ switch( currentStep ) {
|
|
|
|
+ case MainDraw:
|
|
|
|
+ case AfterTonemapping:
|
|
|
|
+ if (showEditorGuides) {
|
|
|
|
+ renderPass(defaultPass, get("debuggeom"), backToFront);
|
|
|
|
+ renderPass(defaultPass, get("debuggeom_alpha"), backToFront);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (showEditorOutlines) {
|
|
|
|
+ var outlineTex = allocTarget("outline", true);
|
|
|
|
+ ctx.engine.pushTarget(outlineTex);
|
|
|
|
+ clear(0);
|
|
|
|
+ draw("highlightBack");
|
|
|
|
+ draw("highlight");
|
|
|
|
+ ctx.engine.popTarget();
|
|
|
|
+ var outlineBlurTex = allocTarget("outlineBlur", false);
|
|
|
|
+ outline.pass.setBlendMode(Alpha);
|
|
|
|
+ outlineBlur.apply(ctx, outlineTex, outlineBlurTex);
|
|
|
|
+ outline.shader.texture = outlineBlurTex;
|
|
|
|
+ outline.render();
|
|
|
|
+ }
|
|
|
|
+ case Overlay:
|
|
|
|
+ renderPass(defaultPass, get("overlay"), backToFront);
|
|
|
|
+ renderPass(defaultPass, get("ui"), backToFront);
|
|
|
|
+ default:
|
|
|
|
+ }
|
|
|
|
+ #end
|
|
|
|
+
|
|
for( f in effects )
|
|
for( f in effects )
|
|
if( f.enabled )
|
|
if( f.enabled )
|
|
f.end(this, currentStep);
|
|
f.end(this, currentStep);
|
|
@@ -699,10 +737,7 @@ class Renderer extends h3d.scene.Renderer {
|
|
debugging = true;
|
|
debugging = true;
|
|
hxd.Window.getInstance().addEventTarget(onEvent);
|
|
hxd.Window.getInstance().addEventTarget(onEvent);
|
|
}
|
|
}
|
|
- #if editor
|
|
|
|
- renderPass(defaultPass, get("overlay"), backToFront);
|
|
|
|
- renderPass(defaultPass, get("ui"), backToFront);
|
|
|
|
- #end
|
|
|
|
|
|
+
|
|
case Performance:
|
|
case Performance:
|
|
if( enableFXAA ) {
|
|
if( enableFXAA ) {
|
|
mark("FXAA");
|
|
mark("FXAA");
|
|
@@ -712,10 +747,6 @@ class Renderer extends h3d.scene.Renderer {
|
|
copy(ldr, null);
|
|
copy(ldr, null);
|
|
}
|
|
}
|
|
performance.render();
|
|
performance.render();
|
|
- #if editor
|
|
|
|
- renderPass(defaultPass, get("overlay"), backToFront);
|
|
|
|
- renderPass(defaultPass, get("ui"), backToFront);
|
|
|
|
- #end
|
|
|
|
}
|
|
}
|
|
if( debugging && displayMode != Debug ) {
|
|
if( debugging && displayMode != Debug ) {
|
|
debugging = false;
|
|
debugging = false;
|