Refactoring.

This commit is contained in:
Nissim Hadar 2017-10-09 17:25:19 -07:00
parent e02876f1ea
commit 7d5a887f43
22 changed files with 146 additions and 63 deletions

View file

@ -433,7 +433,7 @@ public:
// Don't actually crash in debug builds, in case this apparent deadlock is simply from
// the developer actively debugging code
#ifdef NDEBUG
////deadlockDetectionCrash();
deadlockDetectionCrash();
#endif
}
}

View file

@ -346,6 +346,7 @@ void ZoneEntityRenderer::updateHazeFromEntity(const TypedEntityPointer& entity)
haze->setHazeColor(glm::vec3(hazeBlendInColor.red / 255.0, hazeBlendInColor.green / 255.0, hazeBlendInColor.blue / 255.0));
xColor hazeBlendOutColor = _hazeProperties.getHazeBlendOutColor();
haze->setDirectionalLightColor(glm::vec3(hazeBlendOutColor.red / 255.0, hazeBlendOutColor.green / 255.0, hazeBlendOutColor.blue / 255.0));
haze->setHazeEnableLightBlend(_hazeProperties.getHazeEnableLightBlend());
haze->setDirectionalLightBlend(model::convertDirectionalLightAngleToPower(_hazeProperties.getHazeLightBlendAngle()));
haze->setHazeAltitudeFactor(model::convertHazeAltitudeToHazeAltitudeFactor(_hazeProperties.getHazeAltitude()));
@ -357,8 +358,7 @@ void ZoneEntityRenderer::updateHazeFromEntity(const TypedEntityPointer& entity)
haze->setHazeKeyLightRangeFactor(model::convertHazeRangeToHazeRangeFactor(_hazeProperties.getHazeKeyLightRange()));
haze->setHazeKeyLightAltitudeFactor(model::convertHazeAltitudeToHazeAltitudeFactor(_hazeProperties.getHazeKeyLightAltitude()));
haze->setZoneOrientation(_lastRotation);
haze->setZonePosition(_lastPosition);
haze->setZoneTransform(entity->getTransform().getMatrix());
}
void ZoneEntityRenderer::updateKeyBackgroundFromEntity(const TypedEntityPointer& entity) {

View file

@ -1159,9 +1159,9 @@ void EntityItemProperties::entityPropertyFlagsFromScriptValue(const QScriptValue
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_BLEND_IN_COLOR, Haze, haze, HazeBlendInColor, hazeBlendInColor);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_BLEND_OUT_COLOR, Haze, haze, HazeBlendOutColor, hazeBlendOutColor);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_ENABLE_LIGHT_BLEND, Haze, haze, HazeEnableLightBlend, hazeEnableLightBlend);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_LIGHT_BLEND_ANGLE, Haze, haze, HazeLightBlendAngle, hazeLightBlendAngle);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_ATTENUATE_KEYLIGHT, Haze, haze, HazeAttenuateKeyLight, hazeAttenuateKeyLight);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_BASE_REF, Haze, haze, HazeBaseRef, hazeBaseRef);

View file

@ -237,16 +237,17 @@ enum EntityPropertyList {
PROP_HAZE_RANGE = PROP_INTENSITY,
PROP_HAZE_BLEND_IN_COLOR = PROP_CUTOFF,
PROP_HAZE_BLEND_OUT_COLOR = PROP_EXPONENT,
PROP_HAZE_LIGHT_BLEND_ANGLE = PROP_IS_SPOTLIGHT,
PROP_HAZE_ENABLE_LIGHT_BLEND = PROP_IS_SPOTLIGHT,
PROP_HAZE_LIGHT_BLEND_ANGLE = PROP_DIFFUSE_COLOR,
PROP_HAZE_ALTITUDE = PROP_DIFFUSE_COLOR,
PROP_HAZE_BASE_REF = PROP_AMBIENT_COLOR_UNUSED,
PROP_HAZE_ALTITUDE = PROP_AMBIENT_COLOR_UNUSED,
PROP_HAZE_BASE_REF = PROP_SPECULAR_COLOR_UNUSED,
PROP_HAZE_BACKGROUND_BLEND = PROP_SPECULAR_COLOR_UNUSED,
PROP_HAZE_BACKGROUND_BLEND = PROP_LINEAR_ATTENUATION_UNUSED,
PROP_HAZE_ATTENUATE_KEYLIGHT = PROP_LINEAR_ATTENUATION_UNUSED,
PROP_HAZE_KEYLIGHT_RANGE = PROP_QUADRATIC_ATTENUATION_UNUSED,
PROP_HAZE_KEYLIGHT_ALTITUDE = PROP_ANIMATION_FRAME_INDEX,
PROP_HAZE_ATTENUATE_KEYLIGHT = PROP_QUADRATIC_ATTENUATION_UNUSED,
PROP_HAZE_KEYLIGHT_RANGE = PROP_ANIMATION_FRAME_INDEX,
PROP_HAZE_KEYLIGHT_ALTITUDE = PROP_MODEL_URL,
PROP_SKYBOX_COLOR = PROP_ANIMATION_URL,
PROP_SKYBOX_URL = PROP_ANIMATION_FPS,

View file

@ -32,6 +32,7 @@ void HazePropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProp
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_BLEND_IN_COLOR, Haze, haze, HazeBlendInColor, hazeBlendInColor);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_BLEND_OUT_COLOR, Haze, haze, HazeBlendOutColor, hazeBlendOutColor);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_ENABLE_LIGHT_BLEND, Haze, haze, HazeEnableLightBlend, hazeEnableLightBlend);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_LIGHT_BLEND_ANGLE, Haze, haze, HazeLightBlendAngle, hazeLightBlendAngle);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
@ -48,6 +49,7 @@ void HazePropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _d
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeRange, float, setHazeRange);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeBlendInColor, xColor, setHazeBlendInColor);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeBlendOutColor, xColor, setHazeBlendOutColor);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeEnableLightBlend, bool, setHazeEnableLightBlend);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeLightBlendAngle, float, setHazeLightBlendAngle);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeAltitude, float, setHazeAltitude);
@ -64,6 +66,7 @@ void HazePropertyGroup::merge(const HazePropertyGroup& other) {
COPY_PROPERTY_IF_CHANGED(hazeRange);
COPY_PROPERTY_IF_CHANGED(hazeBlendInColor);
COPY_PROPERTY_IF_CHANGED(hazeBlendOutColor);
COPY_PROPERTY_IF_CHANGED(hazeEnableLightBlend);
COPY_PROPERTY_IF_CHANGED(hazeLightBlendAngle);
COPY_PROPERTY_IF_CHANGED(hazeAltitude);
@ -82,6 +85,7 @@ void HazePropertyGroup::debugDump() const {
qCDebug(entities) << " _hazeRange:" << _hazeRange;
qCDebug(entities) << " _hazeBlendInColor:" << _hazeBlendInColor;
qCDebug(entities) << " _hazeBlendOutColor:" << _hazeBlendOutColor;
qCDebug(entities) << " _hazeEnableLightBlend:" << _hazeEnableLightBlend;
qCDebug(entities) << " _hazeLightBlendAngle:" << _hazeLightBlendAngle;
qCDebug(entities) << " _hazeAltitude:" << _hazeAltitude;
@ -104,6 +108,9 @@ void HazePropertyGroup::listChangedProperties(QList<QString>& out) {
if (hazeBlendOutColorChanged()) {
out << "haze-hazeBlendOutColor";
}
if (hazeEnableLightBlendChanged()) {
out << "haze-hazeEnableLightBlend";
}
if (hazeLightBlendAngleChanged()) {
out << "haze-hazeLightBlendAngle";
}
@ -142,6 +149,7 @@ bool HazePropertyGroup::appendToEditPacket(OctreePacketData* packetData,
APPEND_ENTITY_PROPERTY(PROP_HAZE_RANGE, getHazeRange());
APPEND_ENTITY_PROPERTY(PROP_HAZE_BLEND_IN_COLOR, getHazeBlendInColor());
APPEND_ENTITY_PROPERTY(PROP_HAZE_BLEND_OUT_COLOR, getHazeBlendOutColor());
APPEND_ENTITY_PROPERTY(PROP_HAZE_ENABLE_LIGHT_BLEND, getHazeEnableLightBlend());
APPEND_ENTITY_PROPERTY(PROP_HAZE_LIGHT_BLEND_ANGLE, getHazeLightBlendAngle());
APPEND_ENTITY_PROPERTY(PROP_HAZE_ALTITUDE, getHazeAltitude());
@ -165,6 +173,7 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
READ_ENTITY_PROPERTY(PROP_HAZE_RANGE, float, setHazeRange);
READ_ENTITY_PROPERTY(PROP_HAZE_BLEND_IN_COLOR, xColor, setHazeBlendInColor);
READ_ENTITY_PROPERTY(PROP_HAZE_BLEND_OUT_COLOR, xColor, setHazeBlendOutColor);
READ_ENTITY_PROPERTY(PROP_HAZE_ENABLE_LIGHT_BLEND, bool, setHazeEnableLightBlend);
READ_ENTITY_PROPERTY(PROP_HAZE_LIGHT_BLEND_ANGLE, float, setHazeLightBlendAngle);
READ_ENTITY_PROPERTY(PROP_HAZE_ALTITUDE, float, setHazeAltitude);
@ -179,6 +188,7 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_RANGE, HazeRange);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_BLEND_IN_COLOR, HazeBlendInColor);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_BLEND_OUT_COLOR, HazeBlendOutColor);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_ENABLE_LIGHT_BLEND, HazeEnableLightBlend);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_LIGHT_BLEND_ANGLE, HazeLightBlendAngle);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_ALTITUDE, HazeAltitude);
@ -201,6 +211,7 @@ void HazePropertyGroup::markAllChanged() {
_hazeRangeChanged = true;
_hazeBlendInColorChanged = true;
_hazeBlendOutColorChanged = true;
_hazeEnableLightBlendChanged = true;
_hazeLightBlendAngleChanged = true;
_hazeAltitudeChanged = true;
@ -219,6 +230,7 @@ EntityPropertyFlags HazePropertyGroup::getChangedProperties() const {
CHECK_PROPERTY_CHANGE(PROP_HAZE_RANGE, hazeRange);
CHECK_PROPERTY_CHANGE(PROP_HAZE_BLEND_IN_COLOR, hazeBlendInColor);
CHECK_PROPERTY_CHANGE(PROP_HAZE_BLEND_OUT_COLOR, hazeBlendOutColor);
CHECK_PROPERTY_CHANGE(PROP_HAZE_ENABLE_LIGHT_BLEND, hazeEnableLightBlend);
CHECK_PROPERTY_CHANGE(PROP_HAZE_LIGHT_BLEND_ANGLE, hazeLightBlendAngle);
CHECK_PROPERTY_CHANGE(PROP_HAZE_ALTITUDE, hazeAltitude);
@ -237,6 +249,7 @@ void HazePropertyGroup::getProperties(EntityItemProperties& properties) const {
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeRange, getHazeRange);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeBlendInColor, getHazeBlendInColor);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeBlendOutColor, getHazeBlendOutColor);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeEnableLightBlend, getHazeEnableLightBlend);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeLightBlendAngle, getHazeLightBlendAngle);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeAltitude, getHazeAltitude);
@ -255,6 +268,7 @@ bool HazePropertyGroup::setProperties(const EntityItemProperties& properties) {
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeRange, hazeRange, setHazeRange);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeBlendInColor, hazeBlendInColor, setHazeBlendInColor);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeBlendOutColor, hazeBlendOutColor, setHazeBlendOutColor);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeEnableLightBlend, hazeEnableLightBlend, setHazeEnableLightBlend);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeLightBlendAngle, hazeLightBlendAngle, setHazeLightBlendAngle);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeAltitude, hazeAltitude, setHazeAltitude);
@ -275,6 +289,7 @@ EntityPropertyFlags HazePropertyGroup::getEntityProperties(EncodeBitstreamParams
requestedProperties += PROP_HAZE_RANGE;
requestedProperties += PROP_HAZE_BLEND_IN_COLOR;
requestedProperties += PROP_HAZE_BLEND_OUT_COLOR;
requestedProperties += PROP_HAZE_ENABLE_LIGHT_BLEND;
requestedProperties += PROP_HAZE_LIGHT_BLEND_ANGLE;
requestedProperties += PROP_HAZE_ALTITUDE;
@ -302,6 +317,7 @@ void HazePropertyGroup::appendSubclassData(OctreePacketData* packetData, EncodeB
APPEND_ENTITY_PROPERTY(PROP_HAZE_RANGE, getHazeRange());
APPEND_ENTITY_PROPERTY(PROP_HAZE_BLEND_IN_COLOR, getHazeBlendInColor());
APPEND_ENTITY_PROPERTY(PROP_HAZE_BLEND_OUT_COLOR, getHazeBlendOutColor());
APPEND_ENTITY_PROPERTY(PROP_HAZE_ENABLE_LIGHT_BLEND, getHazeEnableLightBlend());
APPEND_ENTITY_PROPERTY(PROP_HAZE_LIGHT_BLEND_ANGLE, getHazeLightBlendAngle());
APPEND_ENTITY_PROPERTY(PROP_HAZE_ALTITUDE, getHazeAltitude());
@ -325,6 +341,7 @@ int HazePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* dat
READ_ENTITY_PROPERTY(PROP_HAZE_RANGE, float, setHazeRange);
READ_ENTITY_PROPERTY(PROP_HAZE_BLEND_IN_COLOR, xColor, setHazeBlendInColor);
READ_ENTITY_PROPERTY(PROP_HAZE_BLEND_OUT_COLOR, xColor, setHazeBlendOutColor);
READ_ENTITY_PROPERTY(PROP_HAZE_ENABLE_LIGHT_BLEND, bool, setHazeEnableLightBlend);
READ_ENTITY_PROPERTY(PROP_HAZE_LIGHT_BLEND_ANGLE, float, setHazeLightBlendAngle);
READ_ENTITY_PROPERTY(PROP_HAZE_ALTITUDE, float, setHazeAltitude);

View file

@ -91,6 +91,7 @@ public:
DEFINE_PROPERTY(PROP_HAZE_RANGE, HazeRange, hazeRange, float, DEFAULT_HAZE_RANGE);
DEFINE_PROPERTY_REF(PROP_HAZE_BLEND_IN_COLOR, HazeBlendInColor, hazeBlendInColor, xColor, DEFAULT_HAZE_BLEND_IN_COLOR);
DEFINE_PROPERTY_REF(PROP_HAZE_BLEND_OUT_COLOR, HazeBlendOutColor, hazeBlendOutColor, xColor, DEFAULT_HAZE_BLEND_OUT_COLOR);
DEFINE_PROPERTY(PROP_HAZE_ENABLE_LIGHT_BLEND, HazeEnableLightBlend, hazeEnableLightBlend, bool, false);
DEFINE_PROPERTY_REF(PROP_HAZE_LIGHT_BLEND_ANGLE, HazeLightBlendAngle, hazeLightBlendAngle, float, DEFAULT_HAZE_LIGHT_BLEND_ANGLE);
// Range & Altitude parameters

View file

@ -338,83 +338,93 @@ float ZoneEntityItem::getHazeRange() const {
return _hazeRange;
}
void ZoneEntityItem::setHazeBlendInColor(const xColor hazeBlendInColor){
void ZoneEntityItem::setHazeBlendInColor(const xColor hazeBlendInColor) {
_hazeBlendInColor = hazeBlendInColor;
_hazePropertiesChanged = true;
}
xColor ZoneEntityItem::getHazeBlendInColor()const{
xColor ZoneEntityItem::getHazeBlendInColor() const {
return _hazeBlendInColor;
}
void ZoneEntityItem::setHazeBlendOutColor(const xColor hazeBlendOutColor){
void ZoneEntityItem::setHazeBlendOutColor(const xColor hazeBlendOutColor) {
_hazeBlendOutColor = hazeBlendOutColor;
_hazePropertiesChanged = true;
}
xColor ZoneEntityItem::getHazeBlendOutColor()const{
xColor ZoneEntityItem::getHazeBlendOutColor()const {
return _hazeBlendOutColor;
}
void ZoneEntityItem::setHazeLightBlendAngle(const float hazeLightBlendAngle){
void ZoneEntityItem::setHazeEnableLightBlend(const bool hazeEnableLightBlend) {
_hazeEnableLightBlend = hazeEnableLightBlend;
_hazePropertiesChanged = true;
}
bool ZoneEntityItem::getHazeEnableLightBlend()const {
return _hazeEnableLightBlend;
}
void ZoneEntityItem::setHazeLightBlendAngle(const float hazeLightBlendAngle) {
_hazeLightBlendAngle = hazeLightBlendAngle;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeLightBlendAngle()const{
float ZoneEntityItem::getHazeLightBlendAngle() const {
return _hazeLightBlendAngle;
}
void ZoneEntityItem::setHazeAltitude(const float hazeAltitude){
void ZoneEntityItem::setHazeAltitude(const float hazeAltitude) {
_hazeAltitude = hazeAltitude;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeAltitude()const{
float ZoneEntityItem::getHazeAltitude() const {
return _hazeAltitude;
}
void ZoneEntityItem::setHazeBaseRef(const float hazeBaseRef){
void ZoneEntityItem::setHazeBaseRef(const float hazeBaseRef) {
_hazeBaseRef = hazeBaseRef;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeBaseRef()const{
float ZoneEntityItem::getHazeBaseRef() const {
return _hazeBaseRef;
}
void ZoneEntityItem::setHazeBackgroundBlend(const float hazeBackgroundBlend){
void ZoneEntityItem::setHazeBackgroundBlend(const float hazeBackgroundBlend) {
_hazeBackgroundBlend = hazeBackgroundBlend;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeBackgroundBlend()const{
float ZoneEntityItem::getHazeBackgroundBlend() const {
return _hazeBackgroundBlend;
}
void ZoneEntityItem::setHazeAttenuateKeyLight(const bool hazeAttenuateKeyLight) {
_hazeAttenuateKeyLight = hazeAttenuateKeyLight;
_hazePropertiesChanged = true;
}
bool ZoneEntityItem::getHazeAttenuateKeyLight()const {
bool ZoneEntityItem::getHazeAttenuateKeyLight() const {
return _hazeAttenuateKeyLight;
}
void ZoneEntityItem::setHazeKeyLightRange(const float hazeKeyLightRange){
void ZoneEntityItem::setHazeKeyLightRange(const float hazeKeyLightRange) {
_hazeKeyLightRange = hazeKeyLightRange;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeKeyLightRange()const {
float ZoneEntityItem::getHazeKeyLightRange() const {
return _hazeKeyLightRange;
}
void ZoneEntityItem::setHazeKeyLightAltitude(const float hazeKeyLightAltitude){
void ZoneEntityItem::setHazeKeyLightAltitude(const float hazeKeyLightAltitude) {
_hazeKeyLightAltitude = hazeKeyLightAltitude;
_hazePropertiesChanged = true;
}
float ZoneEntityItem::getHazeKeyLightAltitude()const{
float ZoneEntityItem::getHazeKeyLightAltitude() const {
return _hazeKeyLightAltitude;
}

View file

@ -74,28 +74,30 @@ public:
uint32_t getHazeMode() const;
void setHazeRange(const float hazeRange);
float getHazeRange()const;
float getHazeRange() const;
void setHazeBlendInColor(const xColor hazeBlendInColor);
xColor getHazeBlendInColor()const;
xColor getHazeBlendInColor() const;
void setHazeBlendOutColor(const xColor hazeBlendOutColor);
xColor getHazeBlendOutColor()const;
xColor getHazeBlendOutColor() const;
void setHazeEnableLightBlend(const bool hazeEnableLightBlend);
bool getHazeEnableLightBlend() const;
void setHazeLightBlendAngle(const float hazeLightBlendAngle);
float getHazeLightBlendAngle()const;
float getHazeLightBlendAngle() const;
void setHazeAltitude(const float hazeAltitude);
float getHazeAltitude()const;
float getHazeAltitude() const;
void setHazeBaseRef(const float hazeBaseRef);
float getHazeBaseRef()const;
float getHazeBaseRef() const;
void setHazeBackgroundBlend(const float hazeBackgroundBlend);
float getHazeBackgroundBlend()const;
float getHazeBackgroundBlend() const;
void setHazeAttenuateKeyLight(const bool hazeAttenuateKeyLight);
bool getHazeAttenuateKeyLight()const;
bool getHazeAttenuateKeyLight() const;
void setHazeKeyLightRange(const float hazeKeyLightRange);
float getHazeKeyLightRange()const;
float getHazeKeyLightRange() const;
void setHazeKeyLightAltitude(const float hazeKeyLightAltitude);
float getHazeKeyLightAltitude()const;
float getHazeKeyLightAltitude() const;
SkyboxPropertyGroup getSkyboxProperties() const { return resultWithReadLock<SkyboxPropertyGroup>([&] { return _skyboxProperties; }); }
@ -149,6 +151,7 @@ protected:
float _hazeRange{ HazePropertyGroup::DEFAULT_HAZE_RANGE };
xColor _hazeBlendInColor{ HazePropertyGroup::DEFAULT_HAZE_BLEND_IN_COLOR };
xColor _hazeBlendOutColor{ HazePropertyGroup::DEFAULT_HAZE_BLEND_OUT_COLOR };
bool _hazeEnableLightBlend{ false };
float _hazeLightBlendAngle{ HazePropertyGroup::DEFAULT_HAZE_LIGHT_BLEND_ANGLE };
float _hazeAltitude{ HazePropertyGroup::DEFAULT_HAZE_ALTITUDE };
@ -156,7 +159,7 @@ protected:
float _hazeBackgroundBlend{ HazePropertyGroup::DEFAULT_HAZE_BACKGROUND_BLEND };
float _hazeAttenuateKeyLight{ false };
bool _hazeAttenuateKeyLight{ false };
float _hazeKeyLightRange{ HazePropertyGroup::DEFAULT_HAZE_KEYLIGHT_RANGE };
float _hazeKeyLightAltitude{ HazePropertyGroup::DEFAULT_HAZE_KEYLIGHT_ALTITUDE };

View file

@ -24,7 +24,8 @@ enum HazeModes {
HAZE_MODE_IS_ACTIVE = 1 << 0,
HAZE_MODE_IS_ALTITUDE_BASED = 1 << 1,
HAZE_MODE_IS_DIRECTIONAL_LIGHT_ATTENUATED = 1 << 2,
HAZE_MODE_IS_MODULATE_COLOR = 1 << 3
HAZE_MODE_IS_MODULATE_COLOR = 1 << 3,
HAZE_MODE_IS_ENABLE_LIGHT_BLEND = 1 << 4
};
// For color modulated mode, the colour values are used as range values, which are then converted to range factors
@ -57,6 +58,17 @@ void Haze::setHazeColor(const glm::vec3 hazeColor) {
}
}
void Haze::setHazeEnableLightBlend(const bool isHazeEnableLightBlend) {
auto& params = _hazeParametersBuffer.get<Parameters>();
if (((params.hazeMode & HAZE_MODE_IS_ENABLE_LIGHT_BLEND) == HAZE_MODE_IS_ENABLE_LIGHT_BLEND) && !isHazeEnableLightBlend) {
_hazeParametersBuffer.edit<Parameters>().hazeMode &= ~HAZE_MODE_IS_ENABLE_LIGHT_BLEND;
}
else if (((params.hazeMode & HAZE_MODE_IS_ENABLE_LIGHT_BLEND) != HAZE_MODE_IS_ENABLE_LIGHT_BLEND) && isHazeEnableLightBlend) {
_hazeParametersBuffer.edit<Parameters>().hazeMode |= HAZE_MODE_IS_ENABLE_LIGHT_BLEND;
}
}
void Haze::setDirectionalLightBlend(const float hazeDirectionalLightBlend) {
auto& params = _hazeParametersBuffer.get<Parameters>();
@ -170,19 +182,11 @@ void Haze::setHazeBackgroundBlendValue(const float hazeBackgroundBlendValue) {
}
}
void Haze::setZoneOrientation(const glm::quat& zoneOrientation) {
void Haze::setZoneTransform(const glm::mat4& zoneTransform) {
auto& params = _hazeParametersBuffer.get<Parameters>();
glm::vec3 zoneDirection = zoneOrientation * glm::vec3(0.0f, 0.0f, -1.0f);
if (params.zoneDirection == zoneDirection) {
_hazeParametersBuffer.edit<Parameters>().zoneDirection = zoneDirection;
if (params.zoneTransform == zoneTransform) {
_hazeParametersBuffer.edit<Parameters>().zoneTransform = zoneTransform;
}
}
void Haze::setZonePosition(const glm::vec3& zonePosition) {
auto& params = _hazeParametersBuffer.get<Parameters>();
if (params.zonePosition != zonePosition) {
_hazeParametersBuffer.edit<Parameters>().zonePosition = zonePosition;
}
}

View file

@ -75,6 +75,7 @@ namespace model {
void setAltitudeBased(const bool isAltitudeBased);
void setHazeAttenuateKeyLight(const bool isHazeAttenuateKeyLight);
void setModulateColorActive(const bool isModulateColorActive);
void setHazeEnableLightBlend(const bool isHazeEnableLightBlend);
void setHazeRangeFactor(const float hazeRange);
void setHazeAltitudeFactor(const float hazeAltitude);
@ -84,8 +85,7 @@ namespace model {
void setHazeBackgroundBlendValue(const float hazeBackgroundBlendValue);
void setZoneOrientation(const glm::quat& zoneOrientation);
void setZonePosition(const glm::vec3& zonePosition);
void setZoneTransform(const glm::mat4& zoneTransform);
UniformBufferView getHazeParametersBuffer() const { return _hazeParametersBuffer; }
@ -103,12 +103,12 @@ namespace model {
int hazeMode{ 0 }; // bit 0 - set to activate haze attenuation of fragment color
// bit 1 - set to add the effect of altitude to the haze attenuation
// bit 2 - set to activate directional light attenuation mode
// bit 3 - set to blend between blend-in and blend-out colours
glm::vec3 zoneDirection;
glm::mat4 zoneTransform;
// Amount of background (skybox) to display, overriding the haze effect for the background
float hazeBackgroundBlendValue{ initialHazeBackgroundBlendValue };
glm::vec3 zonePosition;
// The haze attenuation exponents used by both fragment and directional light attenuation
float hazeRangeFactor{ convertHazeRangeToHazeRangeFactor(initialHazeRange_m) };

View file

@ -192,6 +192,8 @@ public:
xColor getHazeBlendInColor() { return _hazeBlendInColor; }
void setHazeBlendOutColor(const xColor hazeBlendOutColor) { _hazeBlendOutColor = hazeBlendOutColor; }
xColor getHazeBlendOutColor() const { return _hazeBlendOutColor; }
void setHazeEnableLightBlend(bool hazeEnableLightBlend) { _hazeEnableLightBlend = hazeEnableLightBlend; }
bool getHazeEnableLightBlend() const { return _hazeEnableLightBlend; }
void setHazeLightBlendAngle(float hazeLightBlendAngle) { _hazeLightBlendAngle = hazeLightBlendAngle; }
float getHazeLightBlendAngle() const { return _hazeLightBlendAngle; }
@ -218,6 +220,7 @@ protected:
float _hazeRange;
xColor _hazeBlendInColor;
xColor _hazeBlendOutColor;
bool _hazeEnableLightBlend;
float _hazeLightBlendAngle;
float _hazeAltitude;

View file

@ -69,6 +69,10 @@ void HazeConfig::setModulateColorActive(const bool active) {
isModulateColorActive = active;
}
void HazeConfig::setHazeEnableLightBlend(const bool active) {
isHazeEnableLightBlend = active;
}
void HazeConfig::setHazeRange_m(const float value) {
hazeRange_m = value;
}
@ -104,6 +108,7 @@ void MakeHaze::configure(const Config& config) {
_haze->setAltitudeBased(config.isAltitudeBased);
_haze->setHazeAttenuateKeyLight(config.isHazeAttenuateKeyLight);
_haze->setModulateColorActive(config.isModulateColorActive);
_haze->setHazeEnableLightBlend(config.isHazeEnableLightBlend);
_haze->setHazeRangeFactor(model::convertHazeRangeToHazeRangeFactor(config.hazeRange_m));
_haze->setHazeAltitudeFactor(model::convertHazeAltitudeToHazeAltitudeFactor(config.hazeAltitude_m));

View file

@ -43,6 +43,7 @@ class MakeHazeConfig : public render::Job::Config {
Q_PROPERTY(bool isAltitudeBased MEMBER isAltitudeBased WRITE setAltitudeBased NOTIFY dirty);
Q_PROPERTY(bool isHazeAttenuateKeyLight MEMBER isHazeAttenuateKeyLight WRITE setHazeAttenuateKeyLight NOTIFY dirty);
Q_PROPERTY(bool isModulateColorActive MEMBER isModulateColorActive WRITE setModulateColorActive NOTIFY dirty);
Q_PROPERTY(bool isHazeEnableLightBlend MEMBER isHazeEnableLightBlend WRITE setHazeEnableLightBlend NOTIFY dirty);
Q_PROPERTY(float hazeRange_m MEMBER hazeRange_m WRITE setHazeRange_m NOTIFY dirty);
Q_PROPERTY(float hazeAltitude_m MEMBER hazeAltitude_m WRITE setHazeAltitude_m NOTIFY dirty);
@ -69,6 +70,7 @@ public:
bool isAltitudeBased{ false };
bool isHazeAttenuateKeyLight{ false };
bool isModulateColorActive{ false };
bool isHazeEnableLightBlend{ false };
float hazeRange_m{ model::initialHazeRange_m };
float hazeAltitude_m{ model::initialHazeAltitude_m };
@ -93,6 +95,7 @@ public slots:
void setAltitudeBased(const bool active) { isAltitudeBased = active; emit dirty(); }
void setHazeAttenuateKeyLight(const bool active) { isHazeAttenuateKeyLight = active; emit dirty(); }
void setModulateColorActive(const bool active) { isModulateColorActive = active; emit dirty(); }
void setHazeEnableLightBlend(const bool active) { isHazeEnableLightBlend = active; emit dirty(); }
void setHazeRange_m(const float value) { hazeRange_m = value; emit dirty(); }
void setHazeAltitude_m(const float value) { hazeAltitude_m = value; emit dirty(); }
@ -139,6 +142,7 @@ public:
bool isAltitudeBased{ false };
bool isHazeAttenuateKeyLight{ false };
bool isModulateColorActive{ false };
bool isHazeEnableLightBlend{ false };
float hazeRange_m{ model::initialHazeRange_m };
float hazeAltitude_m{ model::initialHazeAltitude_m };
@ -163,6 +167,7 @@ public:
void setAltitudeBased(const bool active);
void setHazeAttenuateKeyLight(const bool active);
void setModulateColorActive(const bool active);
void setHazeEnableLightBlend(const bool active);
void setHazeRange_m(const float value);
void setHazeAltitude_m(const float value);

View file

@ -65,8 +65,14 @@ void main(void) {
vec4 directionalLightColor = vec4(hazeParams.directionalLightColor, 1.0);
vec4 blendedHazeColor =
mix(hazeColor, directionalLightColor, power);
// Use the haze colour for the belnd-out colour, if blend is not enabled
vec4 blendedHazeColor;
if ((hazeParams.hazeMode & HAZE_MODE_IS_ENABLE_LIGHT_BLEND) == HAZE_MODE_IS_ENABLE_LIGHT_BLEND) {
blendedHazeColor = mix(hazeColor, directionalLightColor, power);
}
else {
blendedHazeColor = hazeColor;
}
vec4 potentialFragColor;

View file

@ -14,6 +14,7 @@ const int HAZE_MODE_IS_ACTIVE = 1 << 0;
const int HAZE_MODE_IS_ALTITUDE_BASED = 1 << 1;
const int HAZE_MODE_IS_DIRECTIONAL_LIGHT_ATTENUATED = 1 << 2;
const int HAZE_MODE_IS_MODULATE_COLOR = 1 << 3;
const int HAZE_MODE_IS_ENABLE_LIGHT_BLEND = 1 << 4;
struct HazeParams {
vec3 hazeColor;
@ -25,11 +26,9 @@ struct HazeParams {
vec3 colorModulationFactor;
int hazeMode;
vec3 zoneDirection;
mat4 zoneTransform;
float backgroundBlendValue;
vec3 zonePosition;
float hazeRangeFactor;
float hazeAltitudeFactor;

View file

@ -30,6 +30,7 @@ void FetchHazeStage::configure(const Config& config) {
_haze->setAltitudeBased(config.isAltitudeBased);
_haze->setHazeAttenuateKeyLight(config.isHazeAttenuateKeyLight);
_haze->setModulateColorActive(config.isModulateColorActive);
_haze->setHazeEnableLightBlend(config.isHazeEnableLightBlend);
_haze->setHazeRangeFactor(model::convertHazeRangeToHazeRangeFactor(config.hazeRange_m));
_haze->setHazeAltitudeFactor(model::convertHazeAltitudeToHazeAltitudeFactor(config.hazeAltitude_m));

View file

@ -97,6 +97,7 @@ class FetchHazeConfig : public render::Job::Config {
Q_PROPERTY(bool isAltitudeBased MEMBER isAltitudeBased WRITE setAltitudeBased NOTIFY dirty);
Q_PROPERTY(bool isHazeAttenuateKeyLight MEMBER isHazeAttenuateKeyLight WRITE setHazeAttenuateKeyLight NOTIFY dirty);
Q_PROPERTY(bool isModulateColorActive MEMBER isModulateColorActive WRITE setModulateColorActive NOTIFY dirty);
Q_PROPERTY(bool isHazeEnableLightBlend MEMBER isHazeEnableLightBlend WRITE setHazeEnableLightBlend NOTIFY dirty);
Q_PROPERTY(float hazeRange_m MEMBER hazeRange_m WRITE setHazeRange_m NOTIFY dirty);
Q_PROPERTY(float hazeAltitude_m MEMBER hazeAltitude_m WRITE setHazeAltitude_m NOTIFY dirty);
@ -123,6 +124,7 @@ public:
bool isAltitudeBased{ false };
bool isHazeAttenuateKeyLight{ false };
bool isModulateColorActive{ false };
bool isHazeEnableLightBlend{ false };
float hazeRange_m{ model::initialHazeRange_m };
float hazeAltitude_m{ model::initialHazeAltitude_m };
@ -147,6 +149,7 @@ public slots:
void setAltitudeBased(const bool active) { isAltitudeBased = active; emit dirty(); }
void setHazeAttenuateKeyLight(const bool active) { isHazeAttenuateKeyLight = active; emit dirty(); }
void setModulateColorActive(const bool active) { isModulateColorActive = active; emit dirty(); }
void setHazeEnableLightBlend(const bool active) { isHazeEnableLightBlend = active; emit dirty(); }
void setHazeRange_m(const float value) { hazeRange_m = value; emit dirty(); }
void setHazeAltitude_m(const float value) { hazeAltitude_m = value; emit dirty(); }

View file

@ -148,7 +148,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
const auto lightClusters = task.addJob<LightClusteringPass>("LightClustering", lightClusteringPassInputs);
// Add haze model
////const auto hazeModel = task.addJob<MakeHaze>("HazeModel");
const auto hazeModel = task.addJob<FetchHazeStage>("HazeModel");
// DeferredBuffer is complete, now let's shade it into the LightingBuffer

View file

@ -167,6 +167,12 @@ void SceneScripting::Stage::setHazeBlendOutColor(const xColor hazeBlendOutColor)
xColor SceneScripting::Stage::getHazeBlendOutColor() const {
return _skyStage->getHazeBlendOutColor();
}
void SceneScripting::Stage::setHazeEnableLightBlend(const bool hazeEnableLightBlend) {
_skyStage->setHazeEnableLightBlend(hazeEnableLightBlend);
}
bool SceneScripting::Stage::getHazeEnableLightBlend() const {
return _skyStage->getHazeEnableLightBlend();
}
void SceneScripting::Stage::setHazeLightBlendAngle(const float hazeLightBlendAngle) {
_skyStage->setHazeLightBlendAngle(hazeLightBlendAngle);
}

View file

@ -128,12 +128,19 @@ namespace SceneScripting {
Q_PROPERTY(float hazeRange READ getHazeRange WRITE setHazeRange)
void setHazeRange(float value);
float getHazeRange() const;
Q_PROPERTY(xColor hazeBlendInColor READ getHazeBlendInColor WRITE setHazeBlendInColor)
void setHazeBlendInColor(xColor value);
xColor getHazeBlendInColor() const;
Q_PROPERTY(xColor hazeBlendOutColor READ getHazeBlendOutColor WRITE setHazeBlendOutColor)
void setHazeBlendOutColor(xColor value);
xColor getHazeBlendOutColor() const;
Q_PROPERTY(bool hazeEnableLightBlend READ getHazeEnableLightBlend WRITE setHazeEnableLightBlend)
void setHazeEnableLightBlend(bool value);
bool getHazeEnableLightBlend() const;
Q_PROPERTY(float hazeLightBlendAngle READ getHazeLightBlendAngle WRITE setHazeLightBlendAngle)
void setHazeLightBlendAngle(float value);
float getHazeLightBlendAngle() const;
@ -141,6 +148,7 @@ namespace SceneScripting {
Q_PROPERTY(float hazeAltitude READ getHazeAltitude WRITE setHazeAltitude)
void setHazeAltitude(float value);
float getHazeAltitude() const;
Q_PROPERTY(float hazeBaseRef READ getHazeBaseRef WRITE setHazeBaseRef)
void setHazeBaseRef(float value);
float getHazeBaseRef() const;
@ -149,12 +157,14 @@ namespace SceneScripting {
void setHazeBackgroundBlend(float value);
float getHazeBackgroundBlend() const;
Q_PROPERTY(float hazeAttenuateKeyLight READ getHazeAttenuateKeyLight WRITE setHazeAttenuateKeyLight)
Q_PROPERTY(bool hazeAttenuateKeyLight READ getHazeAttenuateKeyLight WRITE setHazeAttenuateKeyLight)
void setHazeAttenuateKeyLight(bool value);
bool getHazeAttenuateKeyLight() const;
Q_PROPERTY(float hazeKeyLightRange READ getHazeKeyLightRange WRITE setHazeKeyLightRange)
void setHazeKeyLightRange(float value);
float getHazeKeyLightRange() const;
Q_PROPERTY(float hazeKeyLightAltitude READ getHazeKeyLightAltitude WRITE setHazeKeyLightAltitude)
void setHazeKeyLightAltitude(float value);
float getHazeKeyLightAltitude() const;

View file

@ -591,6 +591,10 @@
</div>
</fieldset>
<fieldset class="zone-group zone-section haze-section property gen fstuple">
<div class="zone-group zone-section haze-section property checkbox">
<input type="checkbox" id="property-zone-haze-enable-light-blend">
<label for="property-zone-haze-enable-keylight-blend">Enable Light Blend</label>
</div>
<div class="tuple">
<div><label>Blend Angle<span class="unit">deg</span></label><input type="number" id="property-zone-haze-blend-angle" min="0" max="180" step="1"></div>
</div>

View file

@ -668,11 +668,13 @@ function loaded() {
var elZoneHazeBlendOutColorRed = document.getElementById("property-zone-haze-blend-out-color-red");
var elZoneHazeBlendOutColorGreen = document.getElementById("property-zone-haze-blend-out-color-green");
var elZoneHazeBlendOutColorBlue = document.getElementById("property-zone-haze-blend-out-color-blue");
var elZoneHazeBackgroundBlend = document.getElementById("property-zone-haze-background-blend");
var elZoneHazeEnableLightBlend = document.getElementById("property-zone-haze-enable-light-blend");
var elZoneHazeLightBlendAngle = document.getElementById("property-zone-haze-blend-angle");
var elZoneHazeAltitude = document.getElementById("property-zone-haze-altitude");
var elZoneHazeBaseRef = document.getElementById("property-zone-haze-altitude-base");
var elZoneHazeBackgroundBlend = document.getElementById("property-zone-haze-background-blend");
var elZoneHazeAttenuateKeyLight = document.getElementById("property-zone-haze-attenuate-keylight");
var elZoneHazeKeyLightRange = document.getElementById("property-zone-haze-keylight-range");
@ -1037,6 +1039,8 @@ function loaded() {
elZoneHazeBlendOutColorRed.value = properties.haze.hazeBlendOutColor.red;
elZoneHazeBlendOutColorGreen.value = properties.haze.hazeBlendOutColor.green;
elZoneHazeBlendOutColorBlue.value = properties.haze.hazeBlendOutColor.blue;
elZoneHazeEnableLightBlend.checked = properties.haze.hazeEnableLightBlend;
elZoneHazeLightBlendAngle.value = properties.haze.hazeLightBlendAngle.toFixed(0);
elZoneHazeAltitude.value = properties.haze.hazeAltitude.toFixed(0);
@ -1495,6 +1499,8 @@ function loaded() {
elZoneHazeBlendOutColorRed.addEventListener('change', zoneHazeBlendOutColorChangeFunction);
elZoneHazeBlendOutColorGreen.addEventListener('change', zoneHazeBlendOutColorChangeFunction);
elZoneHazeBlendOutColorBlue.addEventListener('change', zoneHazeBlendOutColorChangeFunction);
elZoneHazeEnableLightBlend.addEventListener('change', createEmitGroupCheckedPropertyUpdateFunction('haze', 'hazeEnableLightBlend'));
elZoneHazeLightBlendAngle.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeLightBlendAngle'));
elZoneHazeAltitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeAltitude'));