Browse Source

Updated code generator to export gpu mesh instancing extension

Vicente Penades 4 years ago
parent
commit
ce0fffe40c

+ 38 - 25
build/SharpGLTF.CodeGen/Constants.cs

@@ -31,31 +31,44 @@ namespace SharpGLTF
 
         #endregion
 
-        #region extension paths
-
-
-        public static string KhronosSchemaDir => System.IO.Path.Combine(Constants.LocalRepoDirectory, "extensions", "2.0", "Khronos");
-        public static string VendorSchemaDir => System.IO.Path.Combine(Constants.LocalRepoDirectory, "extensions", "2.0", "Vendor");
-
-        public static string KhronosModelXMPSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_xmp", "schema", "glTF.KHR_xmp.schema.json");
-        public static string KhronosNodeXMPSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_xmp", "schema", "node.KHR_xmp.schema.json");
-
-        public static string KhronosDracoSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_draco_mesh_compression", "schema");
-        public static string KhronosPbrSpecGlossSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_materials_pbrSpecularGlossiness", "schema", "glTF.KHR_materials_pbrSpecularGlossiness.schema.json");
-
-        public static string KhronosPbrClearCoatSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_materials_clearcoat", "schema", "glTF.KHR_materials_clearcoat.schema.json");
-        public static string KhronosPbrTransmissionSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_materials_transmission", "schema", "glTF.KHR_materials_transmission.schema.json");
-        public static string KhronosPbrSheenSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_materials_sheen", "schema", "glTF.KHR_materials_sheen.schema.json");
-        public static string KhronosUnlitSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_materials_unlit", "schema", "glTF.KHR_materials_unlit.schema.json");
-        public static string KhronosModelLightsPunctualSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_lights_punctual", "schema", "glTF.KHR_lights_punctual.schema.json");
-        public static string KhronosNodeLightsPunctualSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_lights_punctual", "schema", "node.KHR_lights_punctual.schema.json");
-        public static string KhronosTextureTransformSchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_texture_transform", "schema", "KHR_texture_transform.textureInfo.schema.json");
-        
-        public static string MicrosoftTextureDDSSchemaFile => System.IO.Path.Combine(VendorSchemaDir, "MSFT_texture_dds", "schema", "glTF.MSFT_texture_dds.schema.json");
-
-        public static string TextureWebpSchemaFile => System.IO.Path.Combine(VendorSchemaDir, "EXT_texture_webp", "schema", "glTF.EXT_texture_webp.schema.json");
-
-        public static string TextureKtx2SchemaFile => System.IO.Path.Combine(KhronosSchemaDir, "KHR_texture_basisu", "schema", "texture.KHR_texture_basisu.schema.json");
+        #region extension paths        
+        public static class KhronosExtensions
+        {
+            private static string KhronosSchemaDir => System.IO.Path.Combine(Constants.LocalRepoDirectory, "extensions", "2.0", "Khronos");
+
+            private static string _Path(string ext, string json)
+            {
+                return System.IO.Path.Combine(KhronosSchemaDir, ext, "schema", json);
+            }
+
+            // public static string Draco => _Path("KHR_draco_mesh_compression", "schema");
+
+            public static string XMP_Model => _Path("KHR_xmp", "glTF.KHR_xmp.schema.json");
+            public static string XMP_Node => _Path("KHR_xmp", "node.KHR_xmp.schema.json");
+            public static string PbrSpecularGlossiness => _Path("KHR_materials_pbrSpecularGlossiness", "glTF.KHR_materials_pbrSpecularGlossiness.schema.json");
+            public static string PbrClearCoat => _Path("KHR_materials_clearcoat", "glTF.KHR_materials_clearcoat.schema.json");
+            public static string PbrTransmission => _Path("KHR_materials_transmission", "glTF.KHR_materials_transmission.schema.json");
+            public static string PbrSheen => _Path("KHR_materials_sheen", "glTF.KHR_materials_sheen.schema.json");
+            public static string Unlit => _Path("KHR_materials_unlit", "glTF.KHR_materials_unlit.schema.json");
+            public static string LightsPunctual_Model => _Path("KHR_lights_punctual", "glTF.KHR_lights_punctual.schema.json");
+            public static string LightsPunctual_Node => _Path("KHR_lights_punctual", "node.KHR_lights_punctual.schema.json");
+            public static string TextureTransform => _Path("KHR_texture_transform", "KHR_texture_transform.textureInfo.schema.json");
+            public static string Ktx2 => _Path("KHR_texture_basisu", "texture.KHR_texture_basisu.schema.json");
+        }
+
+        public static class VendorExtensions
+        {
+            private static string VendorSchemaDir => System.IO.Path.Combine(Constants.LocalRepoDirectory, "extensions", "2.0", "Vendor");
+
+            private static string _Path(string ext, string json)
+            {
+                return System.IO.Path.Combine(VendorSchemaDir, ext, "schema", json);
+            }
+
+            public static string TextureDDS => _Path("MSFT_texture_dds", "glTF.MSFT_texture_dds.schema.json");
+            public static string TextureWebp => _Path("EXT_texture_webp", "glTF.EXT_texture_webp.schema.json");
+            public static string MeshGpuInstancing => _Path("EXT_mesh_gpu_instancing", "glTF.EXT_mesh_gpu_instancing.schema.json");
+        }
 
         #endregion
 

+ 30 - 14
build/SharpGLTF.CodeGen/Program.cs

@@ -37,11 +37,14 @@ namespace SharpGLTF
             // lights
             _ProcessKhronosLightsPunctualExtension();
 
+            // gpu mesh instancing
+            _ProcessMeshGpuInstancingExtension();
+
             // textures
             _ProcessKhronosTextureTransformExtension();
             _ProcessMicrosoftTextureDDSExtension();
             _ProcessTextureWebpExtension();
-            _ProcessTextureKtx2Extension();
+            _ProcessTextureKtx2Extension();            
 
             // these extansions are not fully supported and temporarily removed:
             // _ProcessDracoExtension();
@@ -106,7 +109,7 @@ namespace SharpGLTF
         {
             // Model extension
 
-            var ctx = LoadSchemaContext(Constants.KhronosModelXMPSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.XMP_Model);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -132,7 +135,7 @@ namespace SharpGLTF
 
             // Node extension
 
-            ctx = LoadSchemaContext(Constants.KhronosNodeXMPSchemaFile);
+            ctx = LoadSchemaContext(Constants.KhronosExtensions.XMP_Node);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -141,7 +144,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosSpecularGlossinessExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosPbrSpecGlossSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.PbrSpecularGlossiness);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
             ctx.IgnoredByCodeEmitter("Texture Info");
@@ -163,7 +166,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosUnlitExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosUnlitSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.Unlit);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -172,7 +175,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosClearCoatExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosPbrClearCoatSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.PbrClearCoat);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
             ctx.IgnoredByCodeEmitter("Texture Info");
@@ -183,7 +186,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosTransmissionExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosPbrTransmissionSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.PbrTransmission);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
             ctx.IgnoredByCodeEmitter("Texture Info");
@@ -194,7 +197,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosSheenExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosPbrSheenSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.PbrSheen);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
             ctx.IgnoredByCodeEmitter("Texture Info");
@@ -219,7 +222,7 @@ namespace SharpGLTF
         {
             // Model
 
-            var ctx = LoadSchemaContext(Constants.KhronosModelLightsPunctualSchemaFile);            
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.LightsPunctual_Model);            
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -233,7 +236,7 @@ namespace SharpGLTF
 
             // Node
 
-            ctx = LoadSchemaContext(Constants.KhronosNodeLightsPunctualSchemaFile);
+            ctx = LoadSchemaContext(Constants.KhronosExtensions.LightsPunctual_Node);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -242,7 +245,7 @@ namespace SharpGLTF
 
         private static void _ProcessKhronosTextureTransformExtension()
         {
-            var ctx = LoadSchemaContext(Constants.KhronosTextureTransformSchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.TextureTransform);
             ctx.IgnoredByCodeEmitter("glTF Property");
             ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
 
@@ -263,7 +266,7 @@ namespace SharpGLTF
 
         private static void _ProcessMicrosoftTextureDDSExtension()
         {
-            var ctx = LoadSchemaContext(Constants.MicrosoftTextureDDSSchemaFile);
+            var ctx = LoadSchemaContext(Constants.VendorExtensions.TextureDDS);
             ctx.IgnoredByCodeEmitter("glTF Property");
 
             ProcessSchema("ext.MSFT.TextureDDS.g", ctx);
@@ -271,7 +274,7 @@ namespace SharpGLTF
 
         private static void _ProcessTextureWebpExtension()
         {
-            var ctx = LoadSchemaContext(Constants.TextureWebpSchemaFile);
+            var ctx = LoadSchemaContext(Constants.VendorExtensions.TextureWebp);
             ctx.IgnoredByCodeEmitter("glTF Property");
 
             ProcessSchema("ext.TextureWEBP.g", ctx);
@@ -279,12 +282,21 @@ namespace SharpGLTF
 
         private static void _ProcessTextureKtx2Extension()
         {
-            var ctx = LoadSchemaContext(Constants.TextureKtx2SchemaFile);
+            var ctx = LoadSchemaContext(Constants.KhronosExtensions.Ktx2);
             ctx.IgnoredByCodeEmitter("glTF Property");
 
             ProcessSchema("ext.TextureKTX2.g", ctx);
         }
 
+        private static void _ProcessMeshGpuInstancingExtension()
+        {
+            var ctx = LoadSchemaContext(Constants.VendorExtensions.MeshGpuInstancing);
+            ctx.IgnoredByCodeEmitter("glTF Property");
+            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            
+            ProcessSchema("ext.MeshGpuInstancing.g", ctx);
+        }
+
         #endregion
 
         #region code generation
@@ -344,6 +356,8 @@ namespace SharpGLTF
 
             newEmitter.SetRuntimeName("light", "PunctualLight");
             newEmitter.SetRuntimeName("light/spot", "PunctualLightSpot");
+            newEmitter.SetRuntimeName("KHR_lights_punctual glTF extension", "_ModelPunctualLights");
+            newEmitter.SetRuntimeName("KHR_lights_punctual node extension", "_NodePunctualLight");
 
             newEmitter.SetRuntimeName("KHR_texture_transform textureInfo extension", "TextureTransform");
 
@@ -351,6 +365,8 @@ namespace SharpGLTF
             newEmitter.SetRuntimeName("EXT_texture_webp glTF extension", "TextureWEBP");
             newEmitter.SetRuntimeName("KHR_texture_basisu glTF extension", "TextureKTX2");
 
+            newEmitter.SetRuntimeName("EXT_mesh_gpu_instancing glTF extension", "MeshGpuInstancing");
+
             var classes = ctx.Classes.ToArray();
             var fields = classes.SelectMany(item => item.Fields).ToArray();
 

+ 1 - 1
build/SharpGLTF.CodeGen/SharpGLTF.CodeGen.csproj

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="LibGit2Sharp" Version="0.26.2" />    
-    <PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="10.3.11" />
+    <PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="10.4.0" />
   </ItemGroup>
 
 </Project>