- Effect* effect = GlslManager::get_effect( filter, frame );
- if ( effect ) {
- bool ok = effect->set_float( "strength_first", mlt_properties_get_double( properties, "opacity" ) );
- assert(ok);
- }
+ mlt_position position = mlt_filter_get_position( filter, frame );
+ mlt_position length = mlt_filter_get_length2( filter, frame );
+ double opacity = mlt_properties_anim_get_double( properties, "opacity", position, length );
+ double alpha = mlt_properties_anim_get_double( properties, "alpha", position, length );
+ mlt_properties_set_double( properties, "_movit.parms.vec4.factor[0]", opacity );
+ mlt_properties_set_double( properties, "_movit.parms.vec4.factor[1]", opacity );
+ mlt_properties_set_double( properties, "_movit.parms.vec4.factor[2]", opacity );
+ mlt_properties_set_double( properties, "_movit.parms.vec4.factor[3]", alpha >= 0 ? alpha : opacity );