public CompileOutputOperation ( |
||
finalState | ||
return | void |
public void CompileOutputOperation( CompositeTargetOperation finalState )
{
// Final target
CompositionTargetPass tpass = technique.OutputTarget;
// Logical-and together the visibilityMask, and multiply the lodBias
finalState.VisibilityMask &= tpass.VisibilityMask;
finalState.LodBias *= tpass.LodBias;
if ( tpass.InputMode == CompositorInputMode.Previous )
{
// Collect target state for previous compositor
// The TargetOperation for the final target is collected seperately as it is merged
// with later operations
previousInstance.CompileOutputOperation( finalState );
}
// Collect passes
CollectPasses( finalState, tpass );
}
///<summary> /// Recursively collect target states (except for final Pass). ///</summary> ///<param name="compiledState">This vector will contain a list of TargetOperation objects</param> public void CompileTargetOperations(List <CompositorTargetOperation> compiledState) { /// Collect targets of previous state if (previousInstance != null) { previousInstance.CompileTargetOperations(compiledState); } /// Texture targets foreach (CompositionTargetPass target in technique.TargetPasses) { CompositorTargetOperation ts = new CompositorTargetOperation(GetTargetForTex(target.OutputName)); /// Set "only initial" flag, visibilityMask and lodBias according to CompositionTargetPass. ts.OnlyInitial = target.OnlyInitial; ts.VisibilityMask = target.VisibilityMask; ts.LodBias = target.LodBias; /// Check for input mode previous if (target.InputMode == CompositorInputMode.Previous) { /// Collect target state for previous compositor /// The TargetOperation for the final target is collected seperately as it is merged /// with later operations previousInstance.CompileOutputOperation(ts); } /// Collect passes of our own target CollectPasses(ts, target); compiledState.Add(ts); } }