Exposing the tone curve in the js api

This commit is contained in:
samcake 2015-12-16 16:32:53 -08:00
parent c0faf978f8
commit 1b1365fd40
6 changed files with 55 additions and 2 deletions

View file

@ -3703,6 +3703,7 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
renderContext._fxaaStatus = Menu::getInstance()->isOptionChecked(MenuOption::Antialiasing);
renderContext._toneMappingExposure = sceneInterface->getEngineToneMappingExposure();
renderContext._toneMappingToneCurve = sceneInterface->getEngineToneMappingToneCurveValue();
renderArgs->_shouldRender = LODManager::shouldRender;

View file

@ -166,6 +166,7 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend
setAntialiasingStatus(renderContext->_fxaaStatus);
setToneMappingExposure(renderContext->_toneMappingExposure);
setToneMappingToneCurve(renderContext->_toneMappingToneCurve);
renderContext->args->_context->syncCache();
@ -403,8 +404,23 @@ void RenderDeferredTask::setToneMappingExposure(float exposure) {
float RenderDeferredTask::getToneMappingExposure() const {
if (_toneMappingJobIndex >= 0) {
_jobs[_toneMappingJobIndex].get<ToneMappingDeferred>()._toneMappingEffect.getExposure();
return _jobs[_toneMappingJobIndex].get<ToneMappingDeferred>()._toneMappingEffect.getExposure();
} else {
return 0.0f;
}
}
void RenderDeferredTask::setToneMappingToneCurve(int toneCurve) {
if (_toneMappingJobIndex >= 0) {
_jobs[_toneMappingJobIndex].edit<ToneMappingDeferred>()._toneMappingEffect.setToneCurve((ToneMappingEffect::ToneCurve)toneCurve);
}
}
int RenderDeferredTask::getToneMappingToneCurve() const {
if (_toneMappingJobIndex >= 0) {
return _jobs[_toneMappingJobIndex].get<ToneMappingDeferred>()._toneMappingEffect.getToneCurve();
} else {
return 0.0f;
}
}

View file

@ -134,6 +134,9 @@ public:
void setToneMappingExposure(float exposure);
float getToneMappingExposure() const;
void setToneMappingToneCurve(int toneCurve);
int getToneMappingToneCurve() const;
virtual void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext);

View file

@ -62,6 +62,7 @@ public:
bool _fxaaStatus = false;
float _toneMappingExposure = 0.0;
int _toneMappingToneCurve = 3;
RenderContext() {}
};

View file

@ -167,3 +167,30 @@ void SceneScriptingInterface::clearEngineCounters() {
_numFeedOverlay3DItems = 0;
_numDrawnOverlay3DItems = 0;
}
void SceneScriptingInterface::setEngineToneMappingToneCurve(const QString& toneCurve) {
if (toneCurve == QString("None")) {
_engineToneMappingToneCurve = 0;
} else if (toneCurve == QString("Gamma22")) {
_engineToneMappingToneCurve = 1;
} else if (toneCurve == QString("Reinhard")) {
_engineToneMappingToneCurve = 2;
} else if (toneCurve == QString("Filmic")) {
_engineToneMappingToneCurve = 3;
}
}
QString SceneScriptingInterface::getEngineToneMappingToneCurve() const {
switch (_engineToneMappingToneCurve) {
case 0:
return QString("None");
case 1:
return QString("Gamma22");
case 2:
return QString("Reinhard");
case 3:
return QString("Filmic");
default:
return QString("Filmic");
};
}

View file

@ -119,7 +119,11 @@ public:
Q_INVOKABLE bool doEngineDisplayHitEffect() { return _drawHitEffect; }
Q_INVOKABLE void setEngineToneMappingExposure(float exposure) { _engineToneMappingExposure = exposure; }
Q_INVOKABLE float getEngineToneMappingExposure() { return _engineToneMappingExposure; }
Q_INVOKABLE float getEngineToneMappingExposure() const { return _engineToneMappingExposure; }
Q_INVOKABLE void setEngineToneMappingToneCurve(const QString& curve);
Q_INVOKABLE QString getEngineToneMappingToneCurve() const;
int getEngineToneMappingToneCurveValue() const { return _engineToneMappingToneCurve; }
signals:
void shouldRenderAvatarsChanged(bool shouldRenderAvatars);
@ -158,6 +162,7 @@ protected:
bool _drawHitEffect = false;
float _engineToneMappingExposure = 0.0f;
int _engineToneMappingToneCurve = 3;
};
#endif // hifi_SceneScriptingInterface_h