public override void Export(ShaderWriter writer, ref ShaderSubProgram subProgram)
        {
            using (MemoryStream ms = new MemoryStream(subProgram.ProgramData))
            {
                using (BinaryReader reader = new BinaryReader(ms))
                {
                    int requirements = reader.ReadInt32();
                    int minOffset    = subProgram.ProgramData.Length;
                    int snippetCount = SerializedPass.HasProgRayTracing(writer.Version) ? 6 : 5;
                    for (int i = 0; i < snippetCount; i++)
                    {
#warning TEMP: HACK: pull/591
                        if (reader.BaseStream.Position >= minOffset)
                        {
                            break;
                        }

                        int offset = reader.ReadInt32();
                        int size   = reader.ReadInt32();
                        if (size > 0)
                        {
                            if (offset < minOffset)
                            {
                                minOffset = offset;
                            }
                            ExportSnippet(writer, ms, offset, size);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
 public override void Export(ShaderWriter writer, ref ShaderSubProgram subProgram)
 {
     using (MemoryStream ms = new MemoryStream(subProgram.ProgramData))
     {
         using (BinaryReader reader = new BinaryReader(ms))
         {
             int requirements = reader.ReadInt32();
             int snippetCount = SerializedPass.HasProgRayTracing(writer.Version) ? 6 : 5;
             for (int i = 0; i < snippetCount; i++)
             {
                 int offset = reader.ReadInt32();
                 int size   = reader.ReadInt32();
                 if (size > 0)
                 {
                     ExportSnippet(writer, ms, offset, size);
                 }
             }
         }
     }
 }