mirror of
https://github.com/lubosz/overte.git
synced 2025-04-29 14:43:19 +02:00
REfreshing the antialiasing qml na dconfig of the Jitter Job
This commit is contained in:
parent
aeb407698d
commit
c5bd9ecf4f
6 changed files with 128 additions and 137 deletions
|
@ -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: {
|
|
||||||
return pause();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
default: {
|
|
||||||
return play();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
case 1: {
|
||||||
|
pause();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
default: {
|
||||||
|
play();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit dirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
int JitterSampleConfig::cycleStopPauseRun() {
|
||||||
|
setState((_state + 1) % 3);
|
||||||
return _state;
|
return _state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -22,15 +22,12 @@ 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")
|
||||||
property: "numSamples"
|
property: "numSamples"
|
||||||
|
@ -38,49 +35,58 @@ Column{
|
||||||
max: 32
|
max: 32
|
||||||
integral: true
|
integral: true
|
||||||
}
|
}
|
||||||
Row {
|
|
||||||
spacing: 10
|
Prop.PropEnum {
|
||||||
id: fxaaOnOff
|
label: "Deferred AA Method"
|
||||||
property bool debugFXAA: false
|
enums: [
|
||||||
HifiControls.Button {
|
"Off",
|
||||||
function getTheText() {
|
"TAA",
|
||||||
if (Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff) {
|
"FXAA",
|
||||||
return "FXAA"
|
]
|
||||||
} else {
|
|
||||||
return "TAA"
|
valueVarSetter: function (mode) { setAAMode(mode) }
|
||||||
}
|
valueVarGetter: function () { return Render.getConfig("RenderMainView.JitterCam").state +
|
||||||
}
|
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff * 2 }
|
||||||
text: getTheText()
|
|
||||||
onClicked: {
|
function setAAMode(mode) {
|
||||||
var onOff = !Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff;
|
console.log("Deferred AA mode is " + mode)
|
||||||
if (onOff) {
|
|
||||||
Render.getConfig("RenderMainView.JitterCam").none();
|
if (mode == 0) {
|
||||||
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = true;
|
Render.getConfig("RenderMainView.JitterCam").state = 0;
|
||||||
} else {
|
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
|
||||||
Render.getConfig("RenderMainView.JitterCam").play();
|
} else if (mode == 1) {
|
||||||
Render.getConfig("RenderMainView.Antialiasing").fxaaOnOff = false;
|
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(); }
|
||||||
|
@ -90,96 +96,75 @@ Column{
|
||||||
onClicked: { Render.getConfig("RenderMainView.JitterCam").next(); }
|
onClicked: { Render.getConfig("RenderMainView.JitterCam").next(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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 }
|
}
|
||||||
}
|
Prop.PropScalar {
|
||||||
ConfigSlider {
|
label: "Covariance gamma"
|
||||||
label: qsTr("Covariance gamma")
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
integral: false
|
|
||||||
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 {}
|
Prop.PropBool {
|
||||||
HifiControls.CheckBox {
|
label: "Feedback history color"
|
||||||
boxSize: 20
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
text: "Feedback history color"
|
property: "feedbackColor"
|
||||||
checked: Render.getConfig("RenderMainView.Antialiasing")["feedbackColor"]
|
}
|
||||||
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["feedbackColor"] = checked }
|
Prop.PropScalar {
|
||||||
}
|
label: "Source blend"
|
||||||
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
ConfigSlider {
|
|
||||||
label: qsTr("Source blend")
|
|
||||||
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"
|
Prop.PropBool {
|
||||||
checked: Render.getConfig("RenderMainView.Antialiasing")["debug"]
|
label: "Show Debug Cursor"
|
||||||
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["debug"] = checked }
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
}
|
property: "showCursorPixel"
|
||||||
HifiControls.CheckBox {
|
}
|
||||||
boxSize: 20
|
Prop.PropScalar {
|
||||||
text: "Show Debug Cursor"
|
label: "Debug Region <"
|
||||||
checked: Render.getConfig("RenderMainView.Antialiasing")["showCursorPixel"]
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
onCheckedChanged: { Render.getConfig("RenderMainView.Antialiasing")["showCursorPixel"] = checked }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSlider {
|
|
||||||
label: qsTr("Debug Region <")
|
|
||||||
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 }
|
}
|
||||||
}
|
Prop.PropScalar {
|
||||||
ConfigSlider {
|
label: "Debug Velocity Threshold [pix]"
|
||||||
label: qsTr("Debug Velocity Threshold [pix]")
|
object: Render.getConfig("RenderMainView.Antialiasing")
|
||||||
integral: false
|
|
||||||
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
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,12 @@ 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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,8 @@ Column {
|
||||||
"Emissive:LightingModel:enableEmissive",
|
"Emissive:LightingModel:enableEmissive",
|
||||||
"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"
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue