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;
}