func (me *FxEffect) UpdateRoutine() { var ( i, tc int buf ustr.Buffer rt string ) if len(me.KeepProcIDsLast) > 0 { me.FxProcs.EnsureLast(me.KeepProcIDsLast...) me.ext.EnsureLast(me.KeepProcIDsLast...) } ops, ext, counts := me.FxProcs, len(me.ext) > 0, make(map[string]int, len(me.FxProcs)+len(me.ext)) doOps: for o := 0; o < len(ops); o++ { if ops[o].Enabled { buf.Write("_%s", ops[o].procID) i = counts[ops[o].procID] ops[o].setProcIndex(i) counts[ops[o].procID] = i + 1 if ops[o].IsTex() { tc++ } } } if ext { ext, ops = false, me.ext goto doOps } me.uberName = buf.String() for rt, _ = range Core.Render.KnownTechniques { me.uberPnames[rt] = strf("uber_%s%s", rt, me.uberName) } thrRend.curEffect = nil if tc > Stats.Programs.maxTexUnits { Stats.Programs.maxTexUnits = tc } }