+ * @brief Set the properties for the motion blur
+ *
+ * @param[in] actor The actor that registers the uniform properties
+ * @param[in] numBlurSamples Number of samples used by the shader
+ */
+inline void SetMotionBlurProperties( Actor& actor, unsigned int numBlurSamples = 8 )
+{
+ actor.RegisterProperty( "uBlurTexCoordScale", 0.125f );
+ actor.RegisterProperty( "uGeometryStretchFactor", 0.05f );
+ actor.RegisterProperty( "uSpeedScalingFactor", 0.5f );
+ actor.RegisterProperty( "uObjectFadeStart", Vector2( 0.25f, 0.25f ) );
+ actor.RegisterProperty( "uObjectFadeEnd", Vector2( 0.5f, 0.5f ) );
+ actor.RegisterProperty( "uAlphaScale", 0.75f );
+ actor.RegisterProperty( "uNumSamples", static_cast<float>( numBlurSamples ) );
+ actor.RegisterProperty( "uRecipNumSamples", 1.0f / static_cast<float>( numBlurSamples ) );
+ actor.RegisterProperty( "uRecipNumSamplesMinusOne", 1.0f / static_cast<float>( numBlurSamples - 1.0f ) );
+ Property::Index uModelProperty = actor.RegisterProperty( "uModelLastFrame", Matrix::IDENTITY );
+
+ Constraint constraint = Constraint::New<Matrix>( actor, uModelProperty, EqualToConstraint() );
+ constraint.AddSource( Source( actor , Actor::Property::WORLD_MATRIX ) );
+ constraint.Apply();
+}
+
+/**