Exemple #1
0
 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;
 }