33 Q_PROPERTY(QColor skyTopColor READ skyTopColor WRITE setSkyTopColor NOTIFY skyTopColorChanged)
34 Q_PROPERTY(QColor skyHorizonColor READ skyHorizonColor WRITE setSkyHorizonColor NOTIFY skyHorizonColorChanged)
35 Q_PROPERTY(
float skyCurve READ skyCurve WRITE setSkyCurve NOTIFY skyCurveChanged)
36 Q_PROPERTY(
float skyEnergy READ skyEnergy WRITE setSkyEnergy NOTIFY skyEnergyChanged)
38 Q_PROPERTY(QColor groundBottomColor READ groundBottomColor WRITE setGroundBottomColor NOTIFY groundBottomColorChanged)
39 Q_PROPERTY(QColor groundHorizonColor READ groundHorizonColor WRITE setGroundHorizonColor NOTIFY groundHorizonColorChanged)
40 Q_PROPERTY(
float groundCurve READ groundCurve WRITE setGroundCurve NOTIFY groundCurveChanged)
41 Q_PROPERTY(
float groundEnergy READ groundEnergy WRITE setGroundEnergy NOTIFY groundEnergyChanged)
43 Q_PROPERTY(QColor sunColor READ sunColor WRITE setSunColor NOTIFY sunColorChanged)
44 Q_PROPERTY(
float sunLatitude READ sunLatitude WRITE setSunLatitude NOTIFY sunLatitudeChanged)
45 Q_PROPERTY(
float sunLongitude READ sunLongitude WRITE setSunLongitude NOTIFY sunLongitudeChanged)
46 Q_PROPERTY(
float sunAngleMin READ sunAngleMin WRITE setSunAngleMin NOTIFY sunAngleMinChanged)
47 Q_PROPERTY(
float sunAngleMax READ sunAngleMax WRITE setSunAngleMax NOTIFY sunAngleMaxChanged)
48 Q_PROPERTY(
float sunCurve READ sunCurve WRITE setSunCurve NOTIFY sunCurveChanged)
49 Q_PROPERTY(
float sunEnergy READ sunEnergy WRITE setSunEnergy NOTIFY sunEnergyChanged)
50 Q_PROPERTY(SkyTextureQuality textureQuality READ textureQuality WRITE setTextureQuality NOTIFY textureQualityChanged)
54 enum class SkyTextureQuality {
56 SkyTextureQualityMedium,
57 SkyTextureQualityHigh,
58 SkyTextureQualityVeryHigh,
60 Q_ENUM(SkyTextureQuality)
62 ProceduralSkyTextureData();
63 ~ProceduralSkyTextureData();
65 QColor skyTopColor()
const;
66 QColor skyHorizonColor()
const;
67 float skyCurve()
const;
68 float skyEnergy()
const;
70 QColor groundBottomColor()
const;
71 QColor groundHorizonColor()
const;
72 float groundCurve()
const;
73 float groundEnergy()
const;
75 QColor sunColor()
const;
76 float sunLatitude()
const;
77 float sunLongitude()
const;
78 float sunAngleMin()
const;
79 float sunAngleMax()
const;
80 float sunCurve()
const;
81 float sunEnergy()
const;
83 SkyTextureQuality textureQuality()
const;
86 void setSkyTopColor(QColor skyTopColor);
87 void setSkyHorizonColor(QColor skyHorizonColor);
88 void setSkyCurve(
float skyCurve);
89 void setSkyEnergy(
float skyEnergy);
91 void setGroundBottomColor(QColor groundBottomColor);
92 void setGroundHorizonColor(QColor groundHorizonColor);
93 void setGroundCurve(
float groundCurve);
94 void setGroundEnergy(
float groundEnergy);
96 void setSunColor(QColor sunColor);
97 void setSunLatitude(
float sunLatitude);
98 void setSunLongitude(
float sunLongitude);
99 void setSunAngleMin(
float sunAngleMin);
100 void setSunAngleMax(
float sunAngleMax);
101 void setSunCurve(
float sunCurve);
102 void setSunEnergy(
float sunEnergy);
104 void setTextureQuality(SkyTextureQuality textureQuality);
106 void generateRGBA16FTexture();
109 void skyTopColorChanged(QColor skyTopColor);
110 void skyHorizonColorChanged(QColor skyHorizonColor);
111 void skyCurveChanged(
float skyCurve);
112 void skyEnergyChanged(
float skyEnergy);
114 void groundBottomColorChanged(QColor groundBottomColor);
115 void groundHorizonColorChanged(QColor groundHorizonColor);
116 void groundCurveChanged(
float groundCurve);
117 void groundEnergyChanged(
float groundEnergy);
119 void sunColorChanged(QColor sunColor);
121 void sunLatitudeChanged(
float sunLatitude);
122 void sunLongitudeChanged(
float sunLongitude);
123 void sunAngleMinChanged(
float sunAngleMin);
124 void sunAngleMaxChanged(
float sunAngleMax);
125 void sunCurveChanged(
float sunCurve);
126 void sunEnergyChanged(
float sunEnergy);
128 void textureQualityChanged(SkyTextureQuality textureQuality);
137 LinearColor(
const QColor &color);
140 LinearColor interpolate(
const LinearColor &color,
float value)
const;
141 LinearColor blend(
const LinearColor &color)
const;
142 quint32 toRGBE9995()
const;
143 quint32 toRGBA8()
const;
144 quint32 toRGBE8()
const;
147 QByteArray generateSkyTexture(
int width,
int height, QByteArray &imageData,
bool isRGBE)
const;
148 void scheduleTextureUpdate();
149 QColor m_skyTopColor = QColor(165, 214, 241);
150 QColor m_skyHorizonColor = QColor(214, 234, 250);
151 float m_skyCurve = 0.09f;
152 float m_skyEnergy = 1.0f;
154 QColor m_groundBottomColor = QColor(40, 47, 54);
155 QColor m_groundHorizonColor = QColor(108, 101, 95);
156 float m_groundCurve = 0.02f;
157 float m_groundEnergy = 1.0f;
159 QColor m_sunColor = QColor(255, 255, 255);
160 float m_sunLatitude = 35.0f;
161 float m_sunLongitude = 0.0f;
162 float m_sunAngleMin = 1.0f;
163 float m_sunAngleMax = 100.0f;
164 float m_sunCurve = 0.05f;
165 float m_sunEnergy = 1.0f;
167 SkyTextureQuality m_textureQuality = SkyTextureQuality::SkyTextureQualityMedium;