Bladeren bron

starting with texturetransform extension...

Vicente Penades 6 jaren geleden
bovenliggende
commit
3949c26fed

+ 1 - 0
build/SharpGLTF.CodeGen/Constants.cs

@@ -30,6 +30,7 @@ namespace SharpGLTF
         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");
 
 
         /// <summary>

+ 24 - 9
build/SharpGLTF.CodeGen/Program.cs

@@ -25,6 +25,7 @@ namespace SharpGLTF
             _ProcessKhronosUnlitExtension();
             _ProcessKhronosModelLightsPunctualExtension();
             _ProcessKhronosNodeLightsPunctualExtension();
+            _ProcessKhronosTextureTransformExtension();
 
             // these extansions are not fully supported and temporarily removed:
             // _ProcessDracoExtension();
@@ -156,15 +157,27 @@ namespace SharpGLTF
             ProcessSchema("ext.NodeLightsPunctual.g", ctx);
         }
 
+        private static void _ProcessKhronosTextureTransformExtension()
+        {
+            var ctx = LoadSchemaContext(Constants.KhronosTextureTransformSchemaFile);
+            ctx.Remove("glTF Property");
 
+            var tex = ctx.Classes
+                .ToArray()
+                .FirstOrDefault(item => item.PersistentName == "KHR_texture_transform textureInfo extension");
 
-        /*
-        private static void _ProcessMicrosoftLODExtension()
-        {
-            var ctx3 = LoadSchemaContext("glTF\\extensions\\2.0\\Vendor\\MSFT_lod\\schema\\glTF.MSFT_lod.schema.json");
-            ctx3.Remove("glTF Property");
-            ProcessSchema("ext.msft_lod.g", ctx3);
-        }*/
+            tex.UseField("offset")
+                .SetDataType(typeof(System.Numerics.Vector2), true)
+                .SetDefaultValue("Vector2.One")
+                .SetItemsRange(0);
+
+            tex.UseField("scale")
+                .SetDataType(typeof(System.Numerics.Vector2), true)
+                .SetDefaultValue("Vector2.One")
+                .SetItemsRange(0);
+
+            ProcessSchema("ext.TextureTransform.g", ctx);
+        }
 
         #endregion
 
@@ -212,12 +225,14 @@ namespace SharpGLTF
             newEmitter.SetRuntimeName("CLAMP_TO_EDGE-MIRRORED_REPEAT-REPEAT", "TextureWrapMode");
             newEmitter.SetRuntimeName("LINEAR-LINEAR_MIPMAP_LINEAR-LINEAR_MIPMAP_NEAREST-NEAREST-NEAREST_MIPMAP_LINEAR-NEAREST_MIPMAP_NEAREST", "TextureMipMapMode");
 
-            newEmitter.SetRuntimeName("KHR_materials_pbrSpecularGlossiness glTF extension", "MaterialPBRSpecularGlossiness_KHR");
-            newEmitter.SetRuntimeName("KHR_materials_unlit glTF extension", "MaterialUnlit_KHR");
+            newEmitter.SetRuntimeName("KHR_materials_pbrSpecularGlossiness glTF extension", "MaterialPBRSpecularGlossiness");
+            newEmitter.SetRuntimeName("KHR_materials_unlit glTF extension", "MaterialUnlit");
 
             newEmitter.SetRuntimeName("light", "PunctualLight");
             newEmitter.SetRuntimeName("light/spot", "PunctualLightSpot");
 
+            newEmitter.SetRuntimeName("KHR_texture_transform textureInfo extension", "TextureTransform");
+
 
 
             var classes = ctx.Classes.ToArray();

+ 8 - 0
src/SharpGLTF/IO/JsonSerializable.cs

@@ -400,6 +400,14 @@ namespace SharpGLTF.IO
                 throw new NotImplementedException();
             }
 
+            if (vtype == typeof(System.Numerics.Vector2))
+            {
+                var l = new List<float>();
+                DeserializeList<float>(reader, l);
+                value = new System.Numerics.Vector2(l[0], l[1]);
+                return true;
+            }
+
             if (vtype == typeof(System.Numerics.Vector3))
             {
                 var l = new List<float>();

+ 72 - 0
src/SharpGLTF/Schema2/Generated/ext.TextureTransform.g.cs

@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------------------------
+//      This file has been programatically generated; DON´T EDIT!
+//------------------------------------------------------------------------------------------------
+
+#pragma warning disable SA1001
+#pragma warning disable SA1027
+#pragma warning disable SA1028
+#pragma warning disable SA1121
+#pragma warning disable SA1205
+#pragma warning disable SA1309
+#pragma warning disable SA1402
+#pragma warning disable SA1505
+#pragma warning disable SA1507
+#pragma warning disable SA1508
+#pragma warning disable SA1652
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Numerics;
+using Newtonsoft.Json;
+
+namespace SharpGLTF.Schema2
+{
+	using Collections;
+
+	/// <summary>
+	/// glTF extension that enables shifting and scaling UV coordinates on a per-texture basis
+	/// </summary>
+	partial class TextureTransform : glTFProperty
+	{
+	
+		private static readonly Vector2 _offsetDefault = Vector2.One;
+		private Vector2? _offset = _offsetDefault;
+		
+		private const Double _rotationDefault = 0;
+		private Double? _rotation = _rotationDefault;
+		
+		private static readonly Vector2 _scaleDefault = Vector2.One;
+		private Vector2? _scale = _scaleDefault;
+		
+		private const Int32 _texCoordMinimum = 0;
+		private Int32? _texCoord;
+		
+	
+		/// <inheritdoc />
+		protected override void SerializeProperties(JsonWriter writer)
+		{
+			base.SerializeProperties(writer);
+			SerializeProperty(writer, "offset", _offset, _offsetDefault);
+			SerializeProperty(writer, "rotation", _rotation, _rotationDefault);
+			SerializeProperty(writer, "scale", _scale, _scaleDefault);
+			SerializeProperty(writer, "texCoord", _texCoord);
+		}
+	
+		/// <inheritdoc />
+		protected override void DeserializeProperty(JsonReader reader, string property)
+		{
+			switch (property)
+			{
+				case "offset": _offset = DeserializeValue<Vector2?>(reader); break;
+				case "rotation": _rotation = DeserializeValue<Double?>(reader); break;
+				case "scale": _scale = DeserializeValue<Vector2?>(reader); break;
+				case "texCoord": _texCoord = DeserializeValue<Int32?>(reader); break;
+				default: base.DeserializeProperty(reader, property); break;
+			}
+		}
+	
+	}
+
+}

+ 1 - 1
src/SharpGLTF/Schema2/Generated/ext.Unlit.g.cs

@@ -28,7 +28,7 @@ namespace SharpGLTF.Schema2
 	/// <summary>
 	/// glTF extension that defines the unlit material model.
 	/// </summary>
-	partial class MaterialUnlit_KHR : glTFProperty
+	partial class MaterialUnlit : glTFProperty
 	{
 	
 	

+ 1 - 1
src/SharpGLTF/Schema2/Generated/ext.pbrSpecularGlossiness.g.cs

@@ -28,7 +28,7 @@ namespace SharpGLTF.Schema2
 	/// <summary>
 	/// glTF extension that defines the specular-glossiness material model from Physically-Based Rendering (PBR) methodology.
 	/// </summary>
-	partial class MaterialPBRSpecularGlossiness_KHR : glTFProperty
+	partial class MaterialPBRSpecularGlossiness : glTFProperty
 	{
 	
 		private static readonly Vector4 _diffuseFactorDefault = Vector4.One;

+ 4 - 2
src/SharpGLTF/Schema2/gltf.ExtensionsFactory.cs

@@ -16,12 +16,14 @@ namespace SharpGLTF.Schema2
 
         static ExtensionsFactory()
         {
-            RegisterExtension<Material, MaterialPBRSpecularGlossiness_KHR>("KHR_materials_pbrSpecularGlossiness");
+            RegisterExtension<Material, MaterialPBRSpecularGlossiness>("KHR_materials_pbrSpecularGlossiness");
 
-            RegisterExtension<Material, MaterialUnlit_KHR>("KHR_materials_unlit");
+            RegisterExtension<Material, MaterialUnlit>("KHR_materials_unlit");
 
             RegisterExtension<ModelRoot, KHR_lights_punctualglTFextension>("KHR_lights_punctual");
             RegisterExtension<Node, KHR_lights_punctualnodeextension>("KHR_lights_punctual");
+
+            RegisterExtension<TextureInfo, TextureTransform>("KHR_texture_transform");
         }
 
         #endregion

+ 1 - 1
src/SharpGLTF/Schema2/gltf.Materials.cs

@@ -52,7 +52,7 @@ namespace SharpGLTF.Schema2
         /// <summary>
         /// Gets a value indicating whether this <see cref="Material"/> instance has Unlit extension.
         /// </summary>
-        public Boolean Unlit => this.GetExtension<MaterialUnlit_KHR>() != null;
+        public Boolean Unlit => this.GetExtension<MaterialUnlit>() != null;
 
         /// <summary>
         /// Gets a collection of <see cref="MaterialChannelView"/> elements available in this <see cref="Material"/> instance.

+ 11 - 11
src/SharpGLTF/Schema2/gltf.MaterialsFactory.cs

@@ -41,8 +41,8 @@ namespace SharpGLTF.Schema2
         {
             this._pbrMetallicRoughness = new MaterialPBRMetallicRoughness();
 
-            this.RemoveExtensions<MaterialPBRSpecularGlossiness_KHR>();
-            this.RemoveExtensions<MaterialUnlit_KHR>();
+            this.RemoveExtensions<MaterialPBRSpecularGlossiness>();
+            this.RemoveExtensions<MaterialUnlit>();
 
             return this;
         }
@@ -53,8 +53,8 @@ namespace SharpGLTF.Schema2
         /// <returns>This <see cref="Material"/> instance.</returns>
         public Material WithPBRSpecularGlossiness()
         {
-            this.RemoveExtensions<MaterialUnlit_KHR>();
-            this.SetExtension(new MaterialPBRSpecularGlossiness_KHR(this));
+            this.RemoveExtensions<MaterialUnlit>();
+            this.SetExtension(new MaterialPBRSpecularGlossiness(this));
 
             return this;
         }
@@ -65,8 +65,8 @@ namespace SharpGLTF.Schema2
         /// <returns>This <see cref="Material"/> instance.</returns>
         public Material WithUnlit()
         {
-            this.RemoveExtensions<MaterialPBRSpecularGlossiness_KHR>();
-            this.SetExtension(new MaterialUnlit_KHR(this));
+            this.RemoveExtensions<MaterialPBRSpecularGlossiness>();
+            this.SetExtension(new MaterialUnlit(this));
 
             return this;
         }
@@ -79,7 +79,7 @@ namespace SharpGLTF.Schema2
                 foreach (var c in channels) yield return c;
             }
 
-            var pbrSpecGloss = this.GetExtension<MaterialPBRSpecularGlossiness_KHR>();
+            var pbrSpecGloss = this.GetExtension<MaterialPBRSpecularGlossiness>();
             if (pbrSpecGloss != null)
             {
                 var channels = pbrSpecGloss.GetChannels(this);
@@ -180,9 +180,9 @@ namespace SharpGLTF.Schema2
         }
     }
 
-    internal sealed partial class MaterialPBRSpecularGlossiness_KHR
+    internal sealed partial class MaterialPBRSpecularGlossiness
     {
-        internal MaterialPBRSpecularGlossiness_KHR(Material material) { }
+        internal MaterialPBRSpecularGlossiness(Material material) { }
 
         private TextureInfo _GetDiffuseTexture(bool create)
         {
@@ -227,8 +227,8 @@ namespace SharpGLTF.Schema2
         }
     }
 
-    internal sealed partial class MaterialUnlit_KHR
+    internal sealed partial class MaterialUnlit
     {
-        internal MaterialUnlit_KHR(Material material) { }
+        internal MaterialUnlit(Material material) { }
     }
 }

+ 5 - 0
src/SharpGLTF/Schema2/gltf.Textures.cs

@@ -128,6 +128,11 @@ namespace SharpGLTF.Schema2
         #endregion
     }
 
+    partial class TextureTransform
+    {
+        internal TextureTransform(TextureInfo parent) { }
+    }
+
     public partial class ModelRoot
     {
         /// <summary>