Added osg_DeltaFrameTime uniform to default set.

This commit is contained in:
Robert Osfield
2005-05-06 10:32:31 +00:00
parent 7480d51830
commit cdab058b32
2 changed files with 18 additions and 4 deletions

View File

@@ -135,10 +135,12 @@ class OSGUTIL_EXPORT SceneView : public osg::Referenced, public osg::CullSetting
{
FRAME_NUMBER_UNIFORM = 0x1,
FRAME_TIME_UNIFORM = 0x2,
VIEW_MATRIX_UNIFORM = 0x4,
INVERSE_VIEW_MATRIX_UNIFORM = 0x8,
DELTA_FRAME_TIME_UNIFORM = 0x4,
VIEW_MATRIX_UNIFORM = 0x8,
INVERSE_VIEW_MATRIX_UNIFORM = 0x16,
DEFAULT_UNIFORMS = FRAME_NUMBER_UNIFORM |
FRAME_TIME_UNIFORM |
DELTA_FRAME_TIME_UNIFORM |
VIEW_MATRIX_UNIFORM |
INVERSE_VIEW_MATRIX_UNIFORM,
ALL_UNIFORMS = 0xFFFFFFFF
@@ -507,7 +509,8 @@ class OSGUTIL_EXPORT SceneView : public osg::Referenced, public osg::CullSetting
bool _requiresFlush;
int _activeUniforms;
int _activeUniforms;
double _previousFrameTime;
};

View File

@@ -54,6 +54,8 @@ SceneView::SceneView(DisplaySettings* ds)
_requiresFlush = true;
_activeUniforms = DEFAULT_UNIFORMS;
_previousFrameTime = 0;
}
@@ -207,7 +209,16 @@ void SceneView::updateUniforms()
osg::Uniform* uniform = _localStateSet->getOrCreateUniform("osg_FrameTime",osg::Uniform::FLOAT);
uniform->set(static_cast<float>(_frameStamp->getReferenceTime()));
}
if ((_activeUniforms & DELTA_FRAME_TIME_UNIFORM) && _frameStamp.valid())
{
float delta_frame_time = (_previousFrameTime != 0.0) ? static_cast<float>(_frameStamp->getReferenceTime()-_previousFrameTime) : 0.0f;
_previousFrameTime = _frameStamp->getReferenceTime();
osg::Uniform* uniform = _localStateSet->getOrCreateUniform("osg_DeltaFrameTime",osg::Uniform::FLOAT);
uniform->set(delta_frame_time);
}
if (_activeUniforms & VIEW_MATRIX_UNIFORM)
{
osg::Uniform* uniform = _localStateSet->getOrCreateUniform("osg_ViewMatrix",osg::Uniform::FLOAT_MAT4);