@startuml hide footbox ShaderGenerator -> SGScheme: validate activate SGScheme SGScheme -> SGScheme: syncWithScene SGScheme -> SGTechniqe: buildRenderState SGTechniqe -> SGPass: buildRenderState deactivate SGScheme activate SGPass SGPass -> TargetRenderState: << new >> loop globalRenderState SGPass -> TargetRenderState: addSubRenderState end SGPass -> TargetRenderState: acquirePrograms(Pass) deactivate SGPass activate TargetRenderState TargetRenderState -> TargetRenderState: createCpuPrograms TargetRenderState -> ProgramManager: createGpuPrograms activate ProgramManager ProgramManager -> ProgramManager: hash(source) ProgramManager --> TargetRenderState: GpuProgramPtr deactivate ProgramManager TargetRenderState -> TargetRenderState : bindUniformParameters @enduml