diff options
author | Jorge Bernal <jbernalmartinez@gmail.com> | 2015-03-22 20:13:53 +0300 |
---|---|---|
committer | Jorge Bernal <jbernalmartinez@gmail.com> | 2015-03-22 20:19:49 +0300 |
commit | e7d051043dc82c2991eb491e0630d9b1065934c3 (patch) | |
tree | 83e6c88e2ebdfca3ffb50814d66c525c5d5bb231 /source/blender/makesdna | |
parent | 0b4a71b07245d5370a02fae4dbde9195c9c58881 (diff) |
BGE: New hysteresis offset to improve LOD level transitions
This change introduces a new hysteresis parameter that it will be added
or subtracted to/from the LOD distance to avoid popping when a LOD
object moves close to the LOD transition continuously.
Then, we have the following:
- a new LOD Hysteresis setting per scene (default 10%) which is located
in Scene context --> Level of Detail panel. This scene parameter also
will active/deactive the scene hysteresis.
- and a new LOD Hysteresis setting per object (default 10%) which is
located in Object context --> Levels of Detail panel. The LOD hysteresis
setting per object (if active) will overwrite the hysteresis setting per
scene value.
For the new blends: the hysteresis setting per scene would be active by
default and the per object would be inactive by default.
For the old blends: both hysteresis settings (per scene and per object)
would be inactive by default. A quick way to take advantage of this
feature for old blends would be to activate the hysteresis parameter in
the scene context -> Level of Detail panel
Reviewers: campbellbarton, kupoman, moguri
Reviewed By: kupoman, moguri
Subscribers: nonamejuju, lordodin
Differential Revision: https://developer.blender.org/D957
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 4 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_scene_types.h | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 2699bb5f22f..4cb979c57b7 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -109,7 +109,8 @@ typedef struct LodLevel { struct LodLevel *next, *prev; struct Object *source; int flags; - float distance; + float distance, pad; + int obhysteresis; } LodLevel; typedef struct Object { @@ -484,6 +485,7 @@ enum { enum { OB_LOD_USE_MESH = 1 << 0, OB_LOD_USE_MAT = 1 << 1, + OB_LOD_USE_HYST = 1 << 2, }; diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 0eae50a2562..ac0803d494c 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -718,7 +718,12 @@ typedef struct GameData { short obstacleSimulation; short raster_storage; float levelHeight; - float deactivationtime, lineardeactthreshold, angulardeactthreshold, pad2; + float deactivationtime, lineardeactthreshold, angulardeactthreshold; + + /* Scene LoD */ + short lodflag, pad2; + int scehysteresis, pad5; + } GameData; #define STEREO_NOSTEREO 1 @@ -791,6 +796,9 @@ enum { #pragma GCC poison GAME_MAT_TEXFACE #endif +/* GameData.lodflag */ +#define SCE_LOD_USE_HYST (1 << 0) + /* UV Paint */ #define UV_SCULPT_LOCK_BORDERS 1 #define UV_SCULPT_ALL_ISLANDS 2 |