// // LightingModel.cpp // libraries/render-utils/src/ // // Created by Sam Gateau 7/1/2016. // Copyright 2016 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #include "LightingModel.h" LightingModel::LightingModel() { Parameters parameters; _parametersBuffer = gpu::BufferView(std::make_shared(sizeof(Parameters), (const gpu::Byte*) ¶meters)); } void LightingModel::setUnlit(bool enable) { if (enable != isUnlitEnabled()) { _parametersBuffer.edit().enableUnlit = (float) enable; } } bool LightingModel::isUnlitEnabled() const { return (bool)_parametersBuffer.get().enableUnlit; } void LightingModel::setEmissive(bool enable) { if (enable != isEmissiveEnabled()) { _parametersBuffer.edit().enableEmissive = (float)enable; } } bool LightingModel::isEmissiveEnabled() const { return (bool)_parametersBuffer.get().enableEmissive; } void LightingModel::setLightmap(bool enable) { if (enable != isLightmapEnabled()) { _parametersBuffer.edit().enableLightmap = (float)enable; } } bool LightingModel::isLightmapEnabled() const { return (bool)_parametersBuffer.get().enableLightmap; } void LightingModel::setBackground(bool enable) { if (enable != isBackgroundEnabled()) { _parametersBuffer.edit().enableBackground = (float)enable; } } bool LightingModel::isBackgroundEnabled() const { return (bool)_parametersBuffer.get().enableBackground; } void LightingModel::setObscurance(bool enable) { if (enable != isObscuranceEnabled()) { _parametersBuffer.edit().enableObscurance = (float)enable; } } bool LightingModel::isObscuranceEnabled() const { return (bool)_parametersBuffer.get().enableObscurance; } void LightingModel::setScattering(bool enable) { if (enable != isScatteringEnabled()) { _parametersBuffer.edit().enableScattering = (float)enable; } } bool LightingModel::isScatteringEnabled() const { return (bool)_parametersBuffer.get().enableScattering; } void LightingModel::setDiffuse(bool enable) { if (enable != isDiffuseEnabled()) { _parametersBuffer.edit().enableDiffuse = (float)enable; } } bool LightingModel::isDiffuseEnabled() const { return (bool)_parametersBuffer.get().enableDiffuse; } void LightingModel::setSpecular(bool enable) { if (enable != isSpecularEnabled()) { _parametersBuffer.edit().enableSpecular = (float)enable; } } bool LightingModel::isSpecularEnabled() const { return (bool)_parametersBuffer.get().enableSpecular; } void LightingModel::setAlbedo(bool enable) { if (enable != isAlbedoEnabled()) { _parametersBuffer.edit().enableAlbedo = (float)enable; } } bool LightingModel::isAlbedoEnabled() const { return (bool)_parametersBuffer.get().enableAlbedo; } void LightingModel::setAmbientLight(bool enable) { if (enable != isAmbientLightEnabled()) { _parametersBuffer.edit().enableAmbientLight = (float)enable; } } bool LightingModel::isAmbientLightEnabled() const { return (bool)_parametersBuffer.get().enableAmbientLight; } void LightingModel::setDirectionalLight(bool enable) { if (enable != isDirectionalLightEnabled()) { _parametersBuffer.edit().enableDirectionalLight = (float)enable; } } bool LightingModel::isDirectionalLightEnabled() const { return (bool)_parametersBuffer.get().enableDirectionalLight; } void LightingModel::setPointLight(bool enable) { if (enable != isPointLightEnabled()) { _parametersBuffer.edit().enablePointLight = (float)enable; } } bool LightingModel::isPointLightEnabled() const { return (bool)_parametersBuffer.get().enablePointLight; } void LightingModel::setSpotLight(bool enable) { if (enable != isSpotLightEnabled()) { _parametersBuffer.edit().enableSpotLight = (float)enable; } } bool LightingModel::isSpotLightEnabled() const { return (bool)_parametersBuffer.get().enableSpotLight; } void LightingModel::setShowLightContour(bool enable) { if (enable != isShowLightContourEnabled()) { _parametersBuffer.edit().showLightContour = (float)enable; } } bool LightingModel::isShowLightContourEnabled() const { return (bool)_parametersBuffer.get().showLightContour; } MakeLightingModel::MakeLightingModel() { _lightingModel = std::make_shared(); } void MakeLightingModel::configure(const Config& config) { _lightingModel->setUnlit(config.enableUnlit); _lightingModel->setEmissive(config.enableEmissive); _lightingModel->setLightmap(config.enableLightmap); _lightingModel->setBackground(config.enableBackground); _lightingModel->setObscurance(config.enableObscurance); _lightingModel->setScattering(config.enableScattering); _lightingModel->setDiffuse(config.enableDiffuse); _lightingModel->setSpecular(config.enableSpecular); _lightingModel->setAlbedo(config.enableAlbedo); _lightingModel->setAmbientLight(config.enableAmbientLight); _lightingModel->setDirectionalLight(config.enableDirectionalLight); _lightingModel->setPointLight(config.enablePointLight); _lightingModel->setSpotLight(config.enableSpotLight); _lightingModel->setShowLightContour(config.showLightContour); } void MakeLightingModel::run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext, LightingModelPointer& lightingModel) { lightingModel = _lightingModel; }