REfreshing the antialiasing qml na dconfig of the Jitter Job

This commit is contained in:
Sam Gateau 2019-08-19 18:14:29 -07:00
parent aeb407698d
commit c5bd9ecf4f
6 changed files with 128 additions and 137 deletions

View file

@ -298,29 +298,33 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const
}); });
} }
void JitterSampleConfig::setIndex(int current) { void JitterSampleConfig::setIndex(int current) {
_index = (current) % JitterSample::SEQUENCE_LENGTH; _index = (current) % JitterSample::SEQUENCE_LENGTH;
emit dirty(); emit dirty();
} }
int JitterSampleConfig::cycleStopPauseRun() { void JitterSampleConfig::setState(int state) {
_state = (_state + 1) % 3; _state = (state) % 3;
switch (_state) { switch (_state) {
case 0: { case 0: {
return none(); none();
break; break;
} }
case 1: { case 1: {
return pause(); pause();
break; break;
} }
case 2: case 2:
default: { default: {
return play(); play();
break; break;
} }
} }
emit dirty();
}
int JitterSampleConfig::cycleStopPauseRun() {
setState((_state + 1) % 3);
return _state; return _state;
} }

View file

@ -25,6 +25,7 @@ class JitterSampleConfig : public render::Job::Config {
Q_PROPERTY(bool freeze MEMBER freeze NOTIFY dirty) Q_PROPERTY(bool freeze MEMBER freeze NOTIFY dirty)
Q_PROPERTY(bool stop MEMBER stop NOTIFY dirty) Q_PROPERTY(bool stop MEMBER stop NOTIFY dirty)
Q_PROPERTY(int index READ getIndex NOTIFY dirty) Q_PROPERTY(int index READ getIndex NOTIFY dirty)
Q_PROPERTY(int state READ getState WRITE setState NOTIFY dirty)
public: public:
JitterSampleConfig() : render::Job::Config(true) {} JitterSampleConfig() : render::Job::Config(true) {}
@ -33,6 +34,7 @@ public:
bool freeze{ false }; bool freeze{ false };
void setIndex(int current); void setIndex(int current);
void setState(int state);
public slots: public slots:
int cycleStopPauseRun(); int cycleStopPauseRun();
@ -58,7 +60,7 @@ class JitterSample {
public: public:
enum { enum {
SEQUENCE_LENGTH = 64 SEQUENCE_LENGTH = 32
}; };
using Config = JitterSampleConfig; using Config = JitterSampleConfig;

View file

@ -150,8 +150,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
// Prepare deferred, generate the shared Deferred Frame Transform. Only valid with the scaled frame buffer // Prepare deferred, generate the shared Deferred Frame Transform. Only valid with the scaled frame buffer
const auto deferredFrameTransform = task.addJob<GenerateDeferredFrameTransform>("DeferredFrameTransform", jitter); const auto deferredFrameTransform = task.addJob<GenerateDeferredFrameTransform>("DeferredFrameTransform", jitter);
const auto opaqueRangeTimer = task.addJob<BeginGPURangeTimer>("BeginOpaqueRangeTimer", "DrawOpaques");
const auto prepareDeferredInputs = PrepareDeferred::Inputs(scaledPrimaryFramebuffer, lightingModel).asVarying(); const auto prepareDeferredInputs = PrepareDeferred::Inputs(scaledPrimaryFramebuffer, lightingModel).asVarying();
const auto prepareDeferredOutputs = task.addJob<PrepareDeferred>("PrepareDeferred", prepareDeferredInputs); const auto prepareDeferredOutputs = task.addJob<PrepareDeferred>("PrepareDeferred", prepareDeferredInputs);
const auto deferredFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(0); const auto deferredFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(0);
@ -164,8 +162,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel, jitter).asVarying(); const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel, jitter).asVarying();
task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber); task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
task.addJob<EndGPURangeTimer>("OpaqueRangeTimer", opaqueRangeTimer);
// Opaque all rendered // Opaque all rendered
// Linear Depth Pass // Linear Depth Pass
@ -216,13 +212,10 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
const auto transparentsInputs = RenderTransparentDeferred::Inputs(transparents, hazeFrame, lightFrame, lightingModel, lightClusters, shadowFrame, jitter).asVarying(); const auto transparentsInputs = RenderTransparentDeferred::Inputs(transparents, hazeFrame, lightFrame, lightingModel, lightClusters, shadowFrame, jitter).asVarying();
task.addJob<RenderTransparentDeferred>("DrawTransparentDeferred", transparentsInputs, shapePlumber); task.addJob<RenderTransparentDeferred>("DrawTransparentDeferred", transparentsInputs, shapePlumber);
const auto outlineRangeTimer = task.addJob<BeginGPURangeTimer>("BeginHighlightRangeTimer", "Highlight"); // Highlight
const auto outlineInputs = DrawHighlightTask::Inputs(items, deferredFramebuffer, lightingFramebuffer, deferredFrameTransform, jitter).asVarying(); const auto outlineInputs = DrawHighlightTask::Inputs(items, deferredFramebuffer, lightingFramebuffer, deferredFrameTransform, jitter).asVarying();
task.addJob<DrawHighlightTask>("DrawHighlight", outlineInputs); task.addJob<DrawHighlightTask>("DrawHighlight", outlineInputs);
task.addJob<EndGPURangeTimer>("HighlightRangeTimer", outlineRangeTimer);
// Layered Over (in front) // Layered Over (in front)
const auto inFrontOpaquesInputs = DrawLayered3D::Inputs(inFrontOpaque, lightingModel, hazeFrame, jitter).asVarying(); const auto inFrontOpaquesInputs = DrawLayered3D::Inputs(inFrontOpaque, lightingModel, hazeFrame, jitter).asVarying();
const auto inFrontTransparentsInputs = DrawLayered3D::Inputs(inFrontTransparent, lightingModel, hazeFrame, jitter).asVarying(); const auto inFrontTransparentsInputs = DrawLayered3D::Inputs(inFrontTransparent, lightingModel, hazeFrame, jitter).asVarying();

View file

@ -22,14 +22,11 @@ import "../../lib/prop" as Prop
Column{ Column{
HifiConstants { id: hifi; }
id: antialiasing id: antialiasing
padding: 10
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
spacing: 10
Prop.PropScalar { Prop.PropScalar {
label: "MSAA" label: "MSAA"
object: Render.getConfig("RenderMainView.PreparePrimaryBufferForward") object: Render.getConfig("RenderMainView.PreparePrimaryBufferForward")
@ -38,49 +35,58 @@ Column{
max: 32 max: 32
integral: true integral: true
} }
Row {
spacing: 10
id: fxaaOnOff
property bool debugFXAA: false
HifiControls.Button {
function getTheText() {
if (Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff) {
return "FXAA"
} else {
return "TAA"
}
}
text: getTheText()
onClicked: {
var onOff = !Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff;
if (onOff) {
Render.getConfig("RenderMainView.JitterCam").none();
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = true;
} else {
Render.getConfig("RenderMainView.JitterCam").play();
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
}
Prop.PropEnum {
label: "Deferred AA Method"
enums: [
"Off",
"TAA",
"FXAA",
]
valueVarSetter: function (mode) { setAAMode(mode) }
valueVarGetter: function () { return Render.getConfig("RenderMainView.JitterCam").state +
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff * 2 }
function setAAMode(mode) {
console.log("Deferred AA mode is " + mode)
if (mode == 0) {
Render.getConfig("RenderMainView.JitterCam").state = 0;
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
} else if (mode == 1) {
Render.getConfig("RenderMainView.JitterCam").state = 1;
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
} else {
Render.getConfig("RenderMainView.JitterCam").state = 0;
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = true;
} }
} }
} }
Separator {} Separator {}
Prop.PropEnum {
label: "Jitter"
object: Render.getConfig("RenderMainView.JitterCam")
property: "state"
enums: [
"Off",
"On",
"Paused",
]
}
Prop.PropScalar {
label: "Sample Index"
object: Render.getConfig("RenderMainView.JitterCam")
property: "index"
// min: -1
// max: 32
readOnly: true
integral: true
}
Row { Row {
spacing: 10 spacing: 10
HifiControls.Button {
text: {
var state = 2 - (Render.getConfig("RenderMainView.JitterCam").freeze * 1 - Render.getConfig("RenderMainView.JitterCam").stop * 2);
if (state === 2) {
return "Jitter"
} else if (state === 1) {
return "Paused at " + Render.getConfig("RenderMainView.JitterCam").index + ""
} else {
return "No Jitter"
}
}
onClicked: { Render.getConfig("RenderMainView.JitterCam").cycleStopPauseRun(); }
}
HifiControls.Button { HifiControls.Button {
text: "<" text: "<"
onClicked: { Render.getConfig("RenderMainView.JitterCam").prev(); } onClicked: { Render.getConfig("RenderMainView.JitterCam").prev(); }
@ -91,95 +97,74 @@ Column{
} }
} }
Separator {} Separator {}
HifiControls.CheckBox { Prop.PropBool {
boxSize: 20 label: "Constrain color"
text: "Constrain color" object: Render.getConfig("RenderMainView.Antialiasing")
checked: Render.getConfig("RenderMainView.Antialiasing")["constrainColor"] property: "constrainColor"
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["constrainColor"] = checked }
} }
ConfigSlider { Prop.PropScalar {
label: qsTr("Covariance gamma") label: "Covariance gamma"
integral: false object: Render.getConfig("RenderMainView.Antialiasing")
config: Render.getConfig("RenderMainView.Antialiasing")
property: "covarianceGamma" property: "covarianceGamma"
max: 1.5 max: 1.5
min: 0.5 min: 0.5
height: 38
} }
Separator {} Separator {}
HifiControls.CheckBox { Prop.PropBool {
boxSize: 20 label: "Feedback history color"
text: "Feedback history color" object: Render.getConfig("RenderMainView.Antialiasing")
checked: Render.getConfig("RenderMainView.Antialiasing")["feedbackColor"] property: "feedbackColor"
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["feedbackColor"] = checked }
} }
Prop.PropScalar {
ConfigSlider { label: "Source blend"
label: qsTr("Source blend") object: Render.getConfig("RenderMainView.Antialiasing")
integral: false
config: Render.getConfig("RenderMainView.Antialiasing")
property: "blend" property: "blend"
max: 1.0 max: 1.0
min: 0.0 min: 0.0
height: 38
} }
Prop.PropScalar {
ConfigSlider { label: "Post sharpen"
label: qsTr("Post sharpen") object: Render.getConfig("RenderMainView.Antialiasing")
integral: false
config: Render.getConfig("RenderMainView.Antialiasing")
property: "sharpen" property: "sharpen"
max: 1.0 max: 1.0
min: 0.0 min: 0.0
} }
Separator {} Separator {}
Row { Prop.PropBool {
label: "Debug"
spacing: 10 object: Render.getConfig("RenderMainView.Antialiasing")
HifiControls.CheckBox { property: "debug"
boxSize: 20
text: "Debug"
checked: Render.getConfig("RenderMainView.Antialiasing")["debug"]
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["debug"] = checked }
} }
HifiControls.CheckBox { Prop.PropBool {
boxSize: 20 label: "Show Debug Cursor"
text: "Show Debug Cursor" object: Render.getConfig("RenderMainView.Antialiasing")
checked: Render.getConfig("RenderMainView.Antialiasing")["showCursorPixel"] property: "showCursorPixel"
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["showCursorPixel"] = checked }
} }
} Prop.PropScalar {
ConfigSlider { label: "Debug Region <"
label: qsTr("Debug Region <") object: Render.getConfig("RenderMainView.Antialiasing")
integral: false
config: Render.getConfig("RenderMainView.Antialiasing")
property: "debugX" property: "debugX"
max: 1.0 max: 1.0
min: 0.0 min: 0.0
} }
HifiControls.CheckBox { Prop.PropBool {
boxSize: 20 label: "Closest Fragment"
text: "Closest Fragment" object: Render.getConfig("RenderMainView.Antialiasing")
checked: Render.getConfig("RenderMainView.Antialiasing")["showClosestFragment"] property: "showClosestFragment"
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["showClosestFragment"] = checked }
} }
ConfigSlider { Prop.PropScalar {
label: qsTr("Debug Velocity Threshold [pix]") label: "Debug Velocity Threshold [pix]"
integral: false object: Render.getConfig("RenderMainView.Antialiasing")
config: Render.getConfig("RenderMainView.Antialiasing")
property: "debugShowVelocityThreshold" property: "debugShowVelocityThreshold"
max: 50 max: 50
min: 0.0 min: 0.0
height: 38
} }
ConfigSlider { Prop.PropScalar {
label: qsTr("Debug Orb Zoom") label: "Debug Orb Zoom"
integral: false object: Render.getConfig("RenderMainView.Antialiasing")
config: Render.getConfig("RenderMainView.Antialiasing")
property: "debugOrbZoom" property: "debugOrbZoom"
max: 32.0 max: 32.0
min: 1.0 min: 1.0
height: 38
} }
} }

View file

@ -38,5 +38,11 @@ Column {
valueVarSetter: function (mode) { bloom.setDebugMode(mode) } valueVarSetter: function (mode) { bloom.setDebugMode(mode) }
} }
Prop.PropBool {
label: "Debug Bloom Buffer"
object: Render.getConfig("RenderMainView.Bloom")
property: "enabled"
}
} }

View file

@ -36,6 +36,7 @@ Column {
"Lightmap:LightingModel:enableLightmap", "Lightmap:LightingModel:enableLightmap",
"Background:LightingModel:enableBackground", "Background:LightingModel:enableBackground",
"Haze:LightingModel:enableHaze", "Haze:LightingModel:enableHaze",
"Bloom:LightingModel:enableBloom",
"AO:LightingModel:enableAmbientOcclusion", "AO:LightingModel:enableAmbientOcclusion",
"Textures:LightingModel:enableMaterialTexturing" "Textures:LightingModel:enableMaterialTexturing"
] ]