public static byte[] Read(string name, IShaderByteCodeReader reader = null) { lock (Dict) { if (!Dict.TryGetValue(name, out var byteCode)) { lock (Dict) { if (!Dict.TryGetValue(name, out byteCode)) { if (reader == null) { byteCode = InternalByteCodeReader.Read(name); } else { byteCode = reader.Read(name); } Dict.Add(name, byteCode); } } } return(byteCode); } }
/// <summary> /// Initializes a new instance of the <see cref="ShaderDescription"/> class. Pass <see cref="IShaderByteCodeReader"/> to read external custom shader bytecodes. /// </summary> /// <param name="name">The name.</param> /// <param name="type">The type.</param> /// <param name="reflector">The reflector.</param> /// <param name="byteCodeName">Name of the byte code.</param> /// <param name="byteCodeReader">Used to read external custom shader byte codes</param> public ShaderDescription(string name, ShaderStage type, IShaderReflector reflector, string byteCodeName, IShaderByteCodeReader byteCodeReader = null) { Name = name; ShaderType = type; ByteCodeName = byteCodeName; ShaderReflector = reflector; this.byteCodeReader = byteCodeReader ?? UWPShaderBytePool.InternalByteCodeReader; }
public static byte[] Read(string name, IShaderByteCodeReader reader = null) { lock (Dict) { if (!Dict.TryGetValue(name, out byte[] byteCode))
/// <summary> /// Initializes a new instance of the <see cref="InputLayoutDescription"/> class. Pass custom <see cref="IShaderByteCodeReader"/> to read external shader bytecodes. /// </summary> /// <param name="byteCodeName">The byte code name.</param> /// <param name="elements">The elements.</param> /// <param name="byteCodeReader"></param> public InputLayoutDescription(string byteCodeName, InputElement[] elements, IShaderByteCodeReader byteCodeReader = null) { ShaderByteCodeName = byteCodeName; InputElements = elements; this.byteCodeReader = byteCodeReader ?? UWPShaderBytePool.InternalByteCodeReader; }