paysages : Compute shadows only once for all textures at the same ground location.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@342 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
23c2056809
commit
f541c081db
5 changed files with 25 additions and 24 deletions
3
TODO
3
TODO
|
@ -1,10 +1,9 @@
|
|||
Technology Preview 2 :
|
||||
- Fix the fog impression when cloud layer overlaps with ground range.
|
||||
- Remove color gradations (replace with automatic boolean and simple colors).
|
||||
- Replace zone ranges with curves (with curve input and curve dialog).
|
||||
- Interface for textures thickness, slope_range and thickness_transparency (and correct slider ranges).
|
||||
- Render tab previews should not rerender when changing render options.
|
||||
- Compute shadows only once for all textures at a same location.
|
||||
=> Add an intermediary light status (two pass lighting).
|
||||
- Add layer sorting/naming.
|
||||
- Disable specular lighting in explorer (and everything camera dependent).
|
||||
- Add logarithmic sliders for some float values.
|
||||
|
|
|
@ -70,7 +70,7 @@ bool BaseExplorerChunk::maintain()
|
|||
|
||||
void BaseExplorerChunk::updatePriority(CameraDefinition* camera)
|
||||
{
|
||||
if (_reset_needed || (_texture_max_size > 0 && _texture_current_size == 0))
|
||||
if (_reset_needed || (_texture_max_size > 1 && _texture_current_size <= 1))
|
||||
{
|
||||
priority = 1000.0;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ public:
|
|||
protected:
|
||||
QColor getColor(double x, double y)
|
||||
{
|
||||
y -= 100.0 * scaling;
|
||||
if (y > 0.0)
|
||||
{
|
||||
return QColor(0, 0, 0);
|
||||
|
@ -66,6 +67,7 @@ public:
|
|||
protected:
|
||||
QColor getColor(double x, double y)
|
||||
{
|
||||
y -= 100.0 * scaling;
|
||||
if (y > 0.0)
|
||||
{
|
||||
return QColor(0, 0, 0);
|
||||
|
|
|
@ -555,57 +555,57 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
<context>
|
||||
<name>FormSky</name>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="101"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="103"/>
|
||||
<source>West preview</source>
|
||||
<translation>Aperçu de l'ouest</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="103"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="105"/>
|
||||
<source>East preview</source>
|
||||
<translation>Aperçu de l'est</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="105"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="107"/>
|
||||
<source>Day time</source>
|
||||
<translation>Heure du jour</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="106"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="108"/>
|
||||
<source>Sun color</source>
|
||||
<translation>Couleur du soleil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="107"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="109"/>
|
||||
<source>Sun radius</source>
|
||||
<translation>Diamètre apparent du soleil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="108"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="110"/>
|
||||
<source>Sun halo radius</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="109"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="111"/>
|
||||
<source>Sun halo profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="110"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="112"/>
|
||||
<source>Zenith color</source>
|
||||
<translation>Couleur du ciel au zénith</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="111"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="113"/>
|
||||
<source>Haze color</source>
|
||||
<translation>Couleur de la brume</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="112"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="114"/>
|
||||
<source>Haze height</source>
|
||||
<translation>Hauteur apparente de la brume</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formsky.cpp" line="113"/>
|
||||
<location filename="../gui_qt/formsky.cpp" line="115"/>
|
||||
<source>Haze smoothing</source>
|
||||
<translation>Facteur de lissage de la brume</translation>
|
||||
</message>
|
||||
|
|
|
@ -336,17 +336,17 @@ double texturesGetLayerCoverage(TextureLayerDefinition* definition, Renderer* re
|
|||
return zoneGetValue(definition->zone, base.location, base.normal);
|
||||
}
|
||||
|
||||
static inline Color _getLayerColor(Renderer* renderer, TextureResult result)
|
||||
static inline Color _getLayerColor(Renderer* renderer, TextureResult result, LightStatus* light)
|
||||
{
|
||||
LightStatus light;
|
||||
|
||||
renderer->getLightStatus(renderer, &light, result.location);
|
||||
return renderer->applyLightStatus(renderer, &light, result.location, result.normal, result.definition->material);
|
||||
return renderer->applyLightStatus(renderer, light, result.location, result.normal, result.definition->material);
|
||||
}
|
||||
|
||||
Color texturesGetLayerColor(TextureLayerDefinition* definition, Renderer* renderer, Vector3 location, double detail)
|
||||
{
|
||||
return _getLayerColor(renderer, _getLayerResult(definition, renderer, location.x, location.z, detail));
|
||||
LightStatus light;
|
||||
TextureResult result = _getLayerResult(definition, renderer, location.x, location.z, detail);
|
||||
renderer->getLightStatus(renderer, &light, result.location);
|
||||
return _getLayerColor(renderer, result, &light);
|
||||
}
|
||||
|
||||
Color texturesGetColor(TexturesDefinition* definition, Renderer* renderer, double x, double z, double detail)
|
||||
|
@ -356,8 +356,6 @@ Color texturesGetColor(TexturesDefinition* definition, Renderer* renderer, doubl
|
|||
double thickness, last_height;
|
||||
int i, start;
|
||||
|
||||
/* TODO Optimize : each layer computes the same shadows */
|
||||
|
||||
detail *= 0.1;
|
||||
|
||||
results[0] = _getTerrainResult(renderer, x, z, detail);
|
||||
|
@ -403,9 +401,11 @@ Color texturesGetColor(TexturesDefinition* definition, Renderer* renderer, doubl
|
|||
}
|
||||
|
||||
/* Apply colors and alphas */
|
||||
LightStatus light;
|
||||
renderer->getLightStatus(renderer, &light, results[start].location);
|
||||
if (results[start].definition)
|
||||
{
|
||||
result = _getLayerColor(renderer, results[start]);
|
||||
result = _getLayerColor(renderer, results[start], &light);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -417,7 +417,7 @@ Color texturesGetColor(TexturesDefinition* definition, Renderer* renderer, doubl
|
|||
{
|
||||
if (results[i].definition)
|
||||
{
|
||||
color = _getLayerColor(renderer, results[i]);
|
||||
color = _getLayerColor(renderer, results[i], &light);
|
||||
color.a = results[i].thickness;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue