@startuml
hide footbox

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