private EmitValHLSL EmitShaderResourceRef( MidBuiltinType type, MidVal uniformVal, Span span) { object key = GetUniformValKey(uniformVal); EmitValHLSL result = VoidVal; if (_uniformResourceCache.TryGetValue(key, out result)) { return result; } int index = _shaderResources.Count; string name = _shared.GenerateName(uniformVal.ToString()); DeclareFields( EmitType(type), _resourceHeaderSpan, name, suffix: string.Format(" : register(t{0})", index)); _shaderResources.Add(uniformVal); result = new SimpleValHLSL( name, (SimpleTypeHLSL)EmitType(uniformVal.Type)); _uniformResourceCache[key] = result; return result; }