From dbf6761a29aefeb8aea2f529eb9ba5f315e7650d Mon Sep 17 00:00:00 2001 From: Adam Graham Date: 2024年1月12日 16:32:23 -0600 Subject: [PATCH 1/5] Code formatting changes --- Runtime/AutoTile.cs | 43 +++++++--------------- Runtime/CombineChildrenMeshes.cs | 17 ++++++--- Runtime/CubeMesh.cs | 28 +++++++------- Runtime/Extensions/MaterialExtensions.cs | 13 +++---- Runtime/Extensions/MeshExtensions.cs | 11 +++--- Runtime/Extensions/MeshFilterExtensions.cs | 15 +++++--- Runtime/MeshGenerator.cs | 8 ++-- Runtime/SaveMesh.cs | 4 +- Runtime/TextureDrawer.cs | 2 +- Runtime/TextureDrawerRenderer.cs | 4 +- Runtime/Triangle.cs | 39 ++++++++------------ Runtime/Triangulator.cs | 6 +-- 12 files changed, 86 insertions(+), 104 deletions(-) diff --git a/Runtime/AutoTile.cs b/Runtime/AutoTile.cs index 3a0f922..8c071ca 100644 --- a/Runtime/AutoTile.cs +++ b/Runtime/AutoTile.cs @@ -103,7 +103,7 @@ public sealed class SubmeshTiling /// The submeshes that are tiled on the renderer. /// [Tooltip("The submeshes that are tiled on the renderer.")] - public SubmeshTiling[] submeshes = new SubmeshTiling[1] { new SubmeshTiling() }; + public SubmeshTiling[] submeshes = new SubmeshTiling[1] { new() }; /// /// The names of the textures that are tiled on the material. @@ -128,9 +128,7 @@ public sealed class SubmeshTiling private void Reset() { - MeshFilter filter = GetComponent(); - - if (filter != null) + if (TryGetComponent(out MeshFilter filter)) { Mesh mesh = Application.isPlaying ? filter.mesh : filter.sharedMesh; @@ -140,9 +138,9 @@ private void Reset() for (int i = 0; i < submeshes.Length; i++) { - SubmeshTiling submesh = new SubmeshTiling(); - submesh.submeshIndex = i; - submeshes[i] = submesh; + submeshes[i] = new() { + submeshIndex = i + }; } } } @@ -264,29 +262,16 @@ private Vector2 GetTextureScale(Axis axis, Vector3 baseScale) Vector3 lossy = transform.lossyScale; Vector3 scale = Vector3.Scale(lossy, baseScale); - switch (axis) + return axis switch { - case Axis.X_Pos: - return new Vector2(scale.z, scale.y); - - case Axis.X_Neg: - return -new Vector2(scale.z, scale.y); - - case Axis.Y_Pos: - return new Vector2(scale.x, scale.z); - - case Axis.Y_Neg: - return -new Vector2(scale.x, scale.z); - - case Axis.Z_Pos: - return new Vector2(scale.x, scale.y); - - case Axis.Z_Neg: - return -new Vector2(scale.x, scale.y); - - default: - return Vector2.zero; - } + Axis.X_Pos => new(scale.z, scale.y), + Axis.X_Neg => new(-scale.z, -scale.y), + Axis.Y_Pos => new(scale.x, scale.z), + Axis.Y_Neg => new(-scale.x, -scale.z), + Axis.Z_Pos => new(scale.x, scale.y), + Axis.Z_Neg => new(-scale.x, -scale.y), + _ => Vector2.zero, + }; } } diff --git a/Runtime/CombineChildrenMeshes.cs b/Runtime/CombineChildrenMeshes.cs index 5cb5fc7..f955f2b 100644 --- a/Runtime/CombineChildrenMeshes.cs +++ b/Runtime/CombineChildrenMeshes.cs @@ -79,12 +79,15 @@ public Mesh Combine() continue; } - CombineInstance instance = new CombineInstance(); - instance.mesh = child.mesh; - instance.transform = child.transform.localToWorldMatrix; + CombineInstance instance = new() + { + mesh = child.mesh, + transform = child.transform.localToWorldMatrix + }; + combine[submesh++] = instance; - if (child.transform != this.transform) + if (child.transform != transform) { if (deleteChildren) { Destroy(child.gameObject); @@ -94,8 +97,10 @@ public Mesh Combine() } } - Mesh combinedMesh = new Mesh(); - combinedMesh.name = combinedMeshName; + Mesh combinedMesh = new() { + name = combinedMeshName + }; + combinedMesh.CombineMeshes(combine, mergeSubmeshes); if (optimizeMesh) { diff --git a/Runtime/CubeMesh.cs b/Runtime/CubeMesh.cs index fb958f8..cd41ce4 100644 --- a/Runtime/CubeMesh.cs +++ b/Runtime/CubeMesh.cs @@ -60,14 +60,14 @@ public static Mesh sharedMesh /// The corners of the cube (Read only). /// public static readonly Vector3[] corners = { - new Vector3( 0.5f, -0.5f, 0.5f), - new Vector3(-0.5f, -0.5f, 0.5f), - new Vector3( 0.5f, 0.5f, 0.5f), - new Vector3(-0.5f, 0.5f, 0.5f), - new Vector3( 0.5f, 0.5f, -0.5f), - new Vector3(-0.5f, 0.5f, -0.5f), - new Vector3( 0.5f, -0.5f, -0.5f), - new Vector3(-0.5f, -0.5f, -0.5f), + new( 0.5f, -0.5f, 0.5f), + new(-0.5f, -0.5f, 0.5f), + new( 0.5f, 0.5f, 0.5f), + new(-0.5f, 0.5f, 0.5f), + new( 0.5f, 0.5f, -0.5f), + new(-0.5f, 0.5f, -0.5f), + new( 0.5f, -0.5f, -0.5f), + new(-0.5f, -0.5f, -0.5f), }; /// @@ -86,12 +86,12 @@ public static Mesh sharedMesh /// The UV coordinates of the cube (Read only). /// public static readonly Vector2[] uv = { - new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 1), new Vector2(1, 1), // Front - new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, 1), new Vector2(1, 1), // Back - new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 0), new Vector2(1, 0), // Top - new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0), // Bottom - new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0), // Left - new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0), // Right + new(0, 0), new(1, 0), new(0, 1), new(1, 1), // Front + new(0, 1), new(1, 1), new(0, 1), new(1, 1), // Back + new(0, 0), new(1, 0), new(0, 0), new(1, 0), // Top + new(0, 0), new(0, 1), new(1, 1), new(1, 0), // Bottom + new(0, 0), new(0, 1), new(1, 1), new(1, 0), // Left + new(0, 0), new(0, 1), new(1, 1), new(1, 0), // Right }; private void Awake() diff --git a/Runtime/Extensions/MaterialExtensions.cs b/Runtime/Extensions/MaterialExtensions.cs index 032faf9..bcdd9d1 100644 --- a/Runtime/Extensions/MaterialExtensions.cs +++ b/Runtime/Extensions/MaterialExtensions.cs @@ -16,14 +16,13 @@ public static class MaterialExtensions public static RenderingMode GetRenderingMode(this Material material) { int mode = (int)material.GetFloat(Identifier.Mode); - - switch (mode) + return mode switch { - case 1: return RenderingMode.Cutout; - case 2: return RenderingMode.Fade; - case 3: return RenderingMode.Transparent; - default: return RenderingMode.Opaque; - } + 1 => RenderingMode.Cutout, + 2 => RenderingMode.Fade, + 3 => RenderingMode.Transparent, + _ => RenderingMode.Opaque, + }; } /// diff --git a/Runtime/Extensions/MeshExtensions.cs b/Runtime/Extensions/MeshExtensions.cs index 7456141..789dfb6 100644 --- a/Runtime/Extensions/MeshExtensions.cs +++ b/Runtime/Extensions/MeshExtensions.cs @@ -31,11 +31,12 @@ public static void Save(this Mesh mesh, string assetName) /// A new copy of the mesh. public static Mesh Copy(this Mesh mesh) { - Mesh copy = new Mesh(); - - copy.indexFormat = mesh.indexFormat; - copy.subMeshCount = mesh.subMeshCount; - copy.vertices = mesh.vertices; + Mesh copy = new() + { + indexFormat = mesh.indexFormat, + subMeshCount = mesh.subMeshCount, + vertices = mesh.vertices + }; for (int m = 0; m < mesh.subMeshCount; m++) { copy.SetTriangles(mesh.GetTriangles(m), m); diff --git a/Runtime/Extensions/MeshFilterExtensions.cs b/Runtime/Extensions/MeshFilterExtensions.cs index 93c89fc..2119ce9 100644 --- a/Runtime/Extensions/MeshFilterExtensions.cs +++ b/Runtime/Extensions/MeshFilterExtensions.cs @@ -69,14 +69,19 @@ public static Mesh CombineMeshes(this MeshFilter[] filters, string combinedMeshN continue; } - CombineInstance instance = new CombineInstance(); - instance.mesh = filter.mesh; - instance.transform = filter.transform.localToWorldMatrix; + CombineInstance instance = new() + { + mesh = filter.mesh, + transform = filter.transform.localToWorldMatrix + }; + combine[submesh++] = instance; } - Mesh combinedMesh = new Mesh(); - combinedMesh.name = combinedMeshName; + Mesh combinedMesh = new() { + name = combinedMeshName + }; + combinedMesh.CombineMeshes(combine); if (optimizeMesh) { diff --git a/Runtime/MeshGenerator.cs b/Runtime/MeshGenerator.cs index 06ec4ab..9c4ee60 100644 --- a/Runtime/MeshGenerator.cs +++ b/Runtime/MeshGenerator.cs @@ -25,7 +25,7 @@ public static class MeshGenerator /// The height of the grid of points. public static Mesh Create(int width, int height) { - Mesh mesh = new Mesh(); + Mesh mesh = new(); if (width * height> 65535) { mesh.indexFormat = IndexFormat.UInt32; @@ -47,11 +47,9 @@ public static Mesh Create(int width, int height) /// A custom function to calculate the vertex for a given point. public static Mesh Create(int width, int height, VertexGenerator vertexGenerator) { - if (vertexGenerator == null) { - vertexGenerator = DefaultVertexGenerator; - } + vertexGenerator ??= DefaultVertexGenerator; - Mesh mesh = new Mesh(); + Mesh mesh = new(); if (width * height> 65535) { mesh.indexFormat = IndexFormat.UInt32; diff --git a/Runtime/SaveMesh.cs b/Runtime/SaveMesh.cs index 58823e6..c2fee53 100644 --- a/Runtime/SaveMesh.cs +++ b/Runtime/SaveMesh.cs @@ -72,9 +72,7 @@ private static void ContextMenu_Save() { if (Selection.activeGameObject != null) { - SaveMesh mesh = Selection.activeGameObject.GetComponent(); - - if (mesh != null) { + if (Selection.activeGameObject.TryGetComponent(out SaveMesh mesh)) { mesh.Save(); } } diff --git a/Runtime/TextureDrawer.cs b/Runtime/TextureDrawer.cs index 89f2af1..a7b21b4 100644 --- a/Runtime/TextureDrawer.cs +++ b/Runtime/TextureDrawer.cs @@ -18,7 +18,7 @@ public abstract class TextureDrawer : ScriptableObject /// [Header("Texture Settings")] [Tooltip("The width and height of the texture.")] - public Vector2Int size = new Vector2Int(1024, 1024); + public Vector2Int size = new(1024, 1024); /// /// The filter mode of the texture. diff --git a/Runtime/TextureDrawerRenderer.cs b/Runtime/TextureDrawerRenderer.cs index 18fdbb5..3da27a9 100644 --- a/Runtime/TextureDrawerRenderer.cs +++ b/Runtime/TextureDrawerRenderer.cs @@ -148,9 +148,7 @@ private static void ForceUpdate() { if (Selection.activeGameObject != null) { - TextureDrawerRenderer renderer = Selection.activeGameObject.GetComponent(); - - if (renderer != null) + if (Selection.activeGameObject.TryGetComponent(out TextureDrawerRenderer renderer)) { if (renderer.m_UpdateInEditor) { renderer.m_Invalidated = true; diff --git a/Runtime/Triangle.cs b/Runtime/Triangle.cs index fd5d0ac..4dbb982 100644 --- a/Runtime/Triangle.cs +++ b/Runtime/Triangle.cs @@ -45,15 +45,15 @@ public Triangle(Vector3 v1, Vector3 v2, Vector3 v3) /// The index of the vertex. public Vector3 this[int index] { - get + readonly get { - switch (index) + return index switch { - case 0: return v1; - case 1: return v2; - case 2: return v3; - default: throw new IndexOutOfRangeException(); - } + 0 => v1, + 1 => v2, + 2 => v3, + _ => throw new IndexOutOfRangeException(), + }; } set { @@ -72,11 +72,11 @@ public Vector3 this[int index] /// /// The triangle to compare to. /// True if the triangles are equal, false otherwise. - public bool Equals(Triangle other) + public readonly bool Equals(Triangle other) { - return this.v1 == other.v1 && - this.v2 == other.v2 && - this.v3 == other.v3; + return v1 == other.v1 && + v2 == other.v2 && + v3 == other.v3; } /// @@ -84,7 +84,7 @@ public bool Equals(Triangle other) /// /// The object to compare to. /// True if the triangles are equal, false otherwise. - public override bool Equals(object other) + public override readonly bool Equals(object other) { if (other is Triangle triangle) { return Equals(triangle); @@ -97,25 +97,18 @@ public override bool Equals(object other) /// Returns the hash code of the triangle. /// /// The hash code of the triangle. - public override int GetHashCode() + public override readonly int GetHashCode() { - unchecked // Overflow is fine, just wrap - { - int hash = 17; - hash = hash * 31 + v1.GetHashCode(); - hash = hash * 31 + v2.GetHashCode(); - hash = hash * 31 + v3.GetHashCode(); - return hash; - } + return HashCode.Combine(v1, v2, v3); } /// /// Converts the triangle to a string. /// /// The string representation of the triangle. - public override string ToString() + public override readonly string ToString() { - return $"{v1.ToString()} {v2.ToString()} {v3.ToString()}"; + return $"{v1} {v2} {v3}"; } /// diff --git a/Runtime/Triangulator.cs b/Runtime/Triangulator.cs index 08b98d3..310c1dd 100644 --- a/Runtime/Triangulator.cs +++ b/Runtime/Triangulator.cs @@ -37,7 +37,7 @@ public static int[] Triangulate(Vector2[] points) } } - List indices = new List(); + List indices = new(); int nv = n; int count = 2 * nv; @@ -105,7 +105,7 @@ private static float Area(Vector2[] points) A += pval.x * qval.y - qval.x * pval.y; } - return (A * 0.5f); + return A * 0.5f; } private static bool Snip(Vector2[] points, int u, int v, int w, int n, int[] V) @@ -150,7 +150,7 @@ private static bool InsideTriangle(Vector2 A, Vector2 B, Vector2 C, Vector2 P) cCROSSap = cx * apy - cy * apx; bCROSScp = bx * cpy - by * cpx; - return ((aCROSSbp>= 0f) && (bCROSScp>= 0f) && (cCROSSap>= 0f)); + return (aCROSSbp>= 0f) && (bCROSScp>= 0f) && (cCROSSap>= 0f); } } From 68d07d7293b90527cb5d3f8616a30c721b07096f Mon Sep 17 00:00:00 2001 From: Adam Graham Date: 2024年8月12日 23:01:35 -0500 Subject: [PATCH 2/5] Upgrade minimum Unity version to 2022.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 61c6b9c..93e7167 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.4.0", "displayName": "Graphics Utils", "description": "The Graphics Utils package provides scripts and utilities for graphics and rendering purposes in Unity projects.", - "unity": "2019.4", + "unity": "2022.3", "repository": "https://github.com/zigurous/unity-graphics-utils", "documentationUrl": "https://docs.zigurous.com/com.zigurous.graphics", "changelogUrl": "https://docs.zigurous.com/com.zigurous.graphics/changelog", From 3f99ab83c344bc18906d0d2b9e082ef6cdbc69a6 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Tue, 9 Dec 2025 12:55:58 -0600 Subject: [PATCH 3/5] Add debug shaders and materials --- Materials.meta | 8 +++ Materials/Debug-Bitangents.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-Bitangents.mat.meta | 8 +++ Materials/Debug-Normals.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-Normals.mat.meta | 8 +++ Materials/Debug-Tangents.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-Tangents.mat.meta | 8 +++ Materials/Debug-UV1.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-UV1.mat.meta | 8 +++ Materials/Debug-UV2.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-UV2.mat.meta | 8 +++ Materials/Debug-VertexColor.mat | 77 ++++++++++++++++++++++++++++ Materials/Debug-VertexColor.mat.meta | 8 +++ Shaders.meta | 8 +++ Shaders/Bitangents.shader | 49 ++++++++++++++++++ Shaders/Bitangents.shader.meta | 9 ++++ Shaders/Normals.shader | 45 ++++++++++++++++ Shaders/Normals.shader.meta | 9 ++++ Shaders/Tangents.shader | 44 ++++++++++++++++ Shaders/Tangents.shader.meta | 9 ++++ Shaders/UV1.shader | 48 +++++++++++++++++ Shaders/UV1.shader.meta | 9 ++++ Shaders/UV2.shader | 48 +++++++++++++++++ Shaders/UV2.shader.meta | 9 ++++ Shaders/VertexColor.shader | 44 ++++++++++++++++ Shaders/VertexColor.shader.meta | 9 ++++ 26 files changed, 858 insertions(+) create mode 100644 Materials.meta create mode 100644 Materials/Debug-Bitangents.mat create mode 100644 Materials/Debug-Bitangents.mat.meta create mode 100644 Materials/Debug-Normals.mat create mode 100644 Materials/Debug-Normals.mat.meta create mode 100644 Materials/Debug-Tangents.mat create mode 100644 Materials/Debug-Tangents.mat.meta create mode 100644 Materials/Debug-UV1.mat create mode 100644 Materials/Debug-UV1.mat.meta create mode 100644 Materials/Debug-UV2.mat create mode 100644 Materials/Debug-UV2.mat.meta create mode 100644 Materials/Debug-VertexColor.mat create mode 100644 Materials/Debug-VertexColor.mat.meta create mode 100644 Shaders.meta create mode 100644 Shaders/Bitangents.shader create mode 100644 Shaders/Bitangents.shader.meta create mode 100644 Shaders/Normals.shader create mode 100644 Shaders/Normals.shader.meta create mode 100644 Shaders/Tangents.shader create mode 100644 Shaders/Tangents.shader.meta create mode 100644 Shaders/UV1.shader create mode 100644 Shaders/UV1.shader.meta create mode 100644 Shaders/UV2.shader create mode 100644 Shaders/UV2.shader.meta create mode 100644 Shaders/VertexColor.shader create mode 100644 Shaders/VertexColor.shader.meta diff --git a/Materials.meta b/Materials.meta new file mode 100644 index 0000000..ffcd5ad --- /dev/null +++ b/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c33b595ef3c5b1d488c8e0596f7bf7e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-Bitangents.mat b/Materials/Debug-Bitangents.mat new file mode 100644 index 0000000..4ef477d --- /dev/null +++ b/Materials/Debug-Bitangents.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-Bitangents + m_Shader: {fileID: 4800000, guid: 799185a077972f94a94413ba62eea208, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-Bitangents.mat.meta b/Materials/Debug-Bitangents.mat.meta new file mode 100644 index 0000000..8e41aed --- /dev/null +++ b/Materials/Debug-Bitangents.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a7df69618fd29a42a5e434b85202514 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-Normals.mat b/Materials/Debug-Normals.mat new file mode 100644 index 0000000..99a42f7 --- /dev/null +++ b/Materials/Debug-Normals.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-Normals + m_Shader: {fileID: 4800000, guid: 128dc0c4016252441906789fa41d7e0d, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-Normals.mat.meta b/Materials/Debug-Normals.mat.meta new file mode 100644 index 0000000..822b6de --- /dev/null +++ b/Materials/Debug-Normals.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e262d1e59c54df43a3751e6b3e71d63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-Tangents.mat b/Materials/Debug-Tangents.mat new file mode 100644 index 0000000..dcdd2b8 --- /dev/null +++ b/Materials/Debug-Tangents.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-Tangents + m_Shader: {fileID: 4800000, guid: ceb9d40400658184a94d27f3b2311566, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-Tangents.mat.meta b/Materials/Debug-Tangents.mat.meta new file mode 100644 index 0000000..5e0ac73 --- /dev/null +++ b/Materials/Debug-Tangents.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1e75dbbea7f6bc42bec333416b957e5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-UV1.mat b/Materials/Debug-UV1.mat new file mode 100644 index 0000000..dc294fd --- /dev/null +++ b/Materials/Debug-UV1.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-UV1 + m_Shader: {fileID: 4800000, guid: 4af31441edc01314bb567e90b33b2ee7, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-UV1.mat.meta b/Materials/Debug-UV1.mat.meta new file mode 100644 index 0000000..cee367a --- /dev/null +++ b/Materials/Debug-UV1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9be49e8ef766a7648a858d3488b8770f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-UV2.mat b/Materials/Debug-UV2.mat new file mode 100644 index 0000000..99012fd --- /dev/null +++ b/Materials/Debug-UV2.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-UV2 + m_Shader: {fileID: 4800000, guid: b56c8bdfcdce88949ab83bafd1ecbfb6, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-UV2.mat.meta b/Materials/Debug-UV2.mat.meta new file mode 100644 index 0000000..d045f4b --- /dev/null +++ b/Materials/Debug-UV2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfa775b39fcefad4cb444bc4bf4848bb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Materials/Debug-VertexColor.mat b/Materials/Debug-VertexColor.mat new file mode 100644 index 0000000..8fc5bab --- /dev/null +++ b/Materials/Debug-VertexColor.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Debug-VertexColor + m_Shader: {fileID: 4800000, guid: 6d47743c9f1966046943571f10b6b632, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Materials/Debug-VertexColor.mat.meta b/Materials/Debug-VertexColor.mat.meta new file mode 100644 index 0000000..e2a8df2 --- /dev/null +++ b/Materials/Debug-VertexColor.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 941ee3154d02c154a8c040ec88674227 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders.meta b/Shaders.meta new file mode 100644 index 0000000..1ca160f --- /dev/null +++ b/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b6f41d1b8258a9438a3472d9c8282a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Bitangents.shader b/Shaders/Bitangents.shader new file mode 100644 index 0000000..c4cabb0 --- /dev/null +++ b/Shaders/Bitangents.shader @@ -0,0 +1,49 @@ +Shader "Zigurous/Debug/Bitangents" +{ + SubShader + { + Pass + { + Fog { Mode Off } + + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + float4 tangent : TANGENT; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float4 color : COLOR; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + float3 bitangent = cross(v.normal, v.tangent.xyz) * v.tangent.w; + o.color.xyz = bitangent * 0.5 + 0.5; + o.color.w = 1.0; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + + ENDCG + } + + } + +} diff --git a/Shaders/Bitangents.shader.meta b/Shaders/Bitangents.shader.meta new file mode 100644 index 0000000..cadf0f0 --- /dev/null +++ b/Shaders/Bitangents.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 799185a077972f94a94413ba62eea208 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Normals.shader b/Shaders/Normals.shader new file mode 100644 index 0000000..28d8b90 --- /dev/null +++ b/Shaders/Normals.shader @@ -0,0 +1,45 @@ +Shader "Zigurous/Debug/Normals" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.color.xyz = v.normal * 0.5 + 0.5; + o.color.w = 1.0; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + + ENDCG + } + + } + +} diff --git a/Shaders/Normals.shader.meta b/Shaders/Normals.shader.meta new file mode 100644 index 0000000..f85c3e6 --- /dev/null +++ b/Shaders/Normals.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 128dc0c4016252441906789fa41d7e0d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Tangents.shader b/Shaders/Tangents.shader new file mode 100644 index 0000000..8f547f9 --- /dev/null +++ b/Shaders/Tangents.shader @@ -0,0 +1,44 @@ +Shader "Zigurous/Debug/Tangents" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float4 tangent : TANGENT; + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.color = v.tangent * 0.5 + 0.5; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + + ENDCG + } + + } + +} diff --git a/Shaders/Tangents.shader.meta b/Shaders/Tangents.shader.meta new file mode 100644 index 0000000..77b940b --- /dev/null +++ b/Shaders/Tangents.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ceb9d40400658184a94d27f3b2311566 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/UV1.shader b/Shaders/UV1.shader new file mode 100644 index 0000000..dc22525 --- /dev/null +++ b/Shaders/UV1.shader @@ -0,0 +1,48 @@ +Shader "Zigurous/Debug/UV 1" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float4 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float4 uv : TEXCOORD0; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = float4(v.texcoord.xy, 0, 0); + return o; + } + + half4 frag (v2f i) : SV_Target + { + half4 c = frac(i.uv); + if (any(saturate(i.uv) - i.uv)) { + c.b = 0.5; + } + return c; + } + + ENDCG + } + + } + +} diff --git a/Shaders/UV1.shader.meta b/Shaders/UV1.shader.meta new file mode 100644 index 0000000..856aed2 --- /dev/null +++ b/Shaders/UV1.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4af31441edc01314bb567e90b33b2ee7 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/UV2.shader b/Shaders/UV2.shader new file mode 100644 index 0000000..e03c364 --- /dev/null +++ b/Shaders/UV2.shader @@ -0,0 +1,48 @@ +Shader "Zigurous/Debug/UV 2" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float4 texcoord1 : TEXCOORD1; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float4 uv : TEXCOORD0; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = float4(v.texcoord1.xy, 0, 0); + return o; + } + + half4 frag (v2f i) : SV_Target + { + half4 c = frac(i.uv); + if (any(saturate(i.uv) - i.uv)) { + c.b = 0.5; + } + return c; + } + + ENDCG + } + + } + +} diff --git a/Shaders/UV2.shader.meta b/Shaders/UV2.shader.meta new file mode 100644 index 0000000..30aed28 --- /dev/null +++ b/Shaders/UV2.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b56c8bdfcdce88949ab83bafd1ecbfb6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/VertexColor.shader b/Shaders/VertexColor.shader new file mode 100644 index 0000000..ac6238d --- /dev/null +++ b/Shaders/VertexColor.shader @@ -0,0 +1,44 @@ +Shader "Zigurous/Debug/Vertex Color" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + fixed4 color : COLOR; + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.color = v.color; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + + ENDCG + } + + } + +} diff --git a/Shaders/VertexColor.shader.meta b/Shaders/VertexColor.shader.meta new file mode 100644 index 0000000..cd3b859 --- /dev/null +++ b/Shaders/VertexColor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6d47743c9f1966046943571f10b6b632 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: From e3efa915e0754130304e7b8f85c3f22cece7edd8 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: Tue, 9 Dec 2025 12:56:23 -0600 Subject: [PATCH 4/5] Add MeshDebugger editor script --- Editor/MeshDebugger.cs | 175 ++++++++++++++++++++++++++++++++++++ Editor/MeshDebugger.cs.meta | 11 +++ 2 files changed, 186 insertions(+) create mode 100644 Editor/MeshDebugger.cs create mode 100644 Editor/MeshDebugger.cs.meta diff --git a/Editor/MeshDebugger.cs b/Editor/MeshDebugger.cs new file mode 100644 index 0000000..51bd392 --- /dev/null +++ b/Editor/MeshDebugger.cs @@ -0,0 +1,175 @@ +using UnityEditor; +using UnityEngine; + +namespace Zigurous.Graphics.Editor +{ + public sealed class MeshDebugger : EditorWindow + { + private Mesh currentMesh; + private MeshFilter currentMeshFilter; + private SkinnedMeshRenderer currentSkinnedMeshRenderer; + private int currentFace = 0, numFaces = 0, newFace = 0; + private GUIStyle labelStyle = null; + private Vector3 p1, p2, p3; + + [MenuItem("Window/Analysis/Mesh Debugger")] + public static void ShowWindow() + { + GetWindow(typeof(MeshDebugger), true, "Mesh Debugger"); + } + + private void OnEnable() + { + SceneView.duringSceneGui -= OnSceneGUI; + SceneView.duringSceneGui += OnSceneGUI; + + OnSelectionChange(); + } + + private void OnDestroy() + { + SceneView.duringSceneGui -= OnSceneGUI; + } + + private void OnSelectionChange() + { + currentMesh = null; + currentSkinnedMeshRenderer = null; + numFaces = 0; + + if (Selection.activeGameObject) + { + currentMeshFilter = Selection.activeGameObject.GetComponentInChildren(); + + if (currentMeshFilter != null) + { + currentMesh = currentMeshFilter.sharedMesh; + numFaces = currentMesh.triangles.Length / 3; + } + else + { + currentSkinnedMeshRenderer = Selection.activeGameObject.GetComponentInChildren(); + + if (currentSkinnedMeshRenderer != null) + { + currentMesh = currentSkinnedMeshRenderer.sharedMesh; + numFaces = currentMesh.triangles.Length / 3; + } + } + } + + currentFace = 0; + newFace = currentFace; + + Repaint(); + } + + private void OnGUI() + { + if (currentMesh == null) + { + EditorGUILayout.LabelField("Current selection contains no mesh"); + return; + } + + EditorGUILayout.LabelField("Number of faces", numFaces.ToString()); + EditorGUILayout.LabelField("Current face", currentFace.ToString()); + + newFace = EditorGUILayout.IntField("Jump to face", currentFace); + + if (newFace != currentFace) + { + if (newFace>= 0 && newFace < numFaces) { + currentFace = newFace; + } + } + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Previous Face")) + { + currentFace = (currentFace - 1) % numFaces; + + if (currentFace < 0) { + currentFace += numFaces; + } + } + + if (GUILayout.Button("Next Face")) { + currentFace = (currentFace + 1) % numFaces; + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + int redIndex = currentMesh.triangles[currentFace * 3]; + int greenIndex = currentMesh.triangles[currentFace * 3 + 1]; + int blueIndex = currentMesh.triangles[currentFace * 3 + 2]; + + EditorGUILayout.LabelField("Red vertex", $"Index: {redIndex}, UV: ({currentMesh.uv[redIndex].x}, {currentMesh.uv[redIndex].y})"); + EditorGUILayout.LabelField("Green vertex", $"Index: {greenIndex}, UV: ({currentMesh.uv[greenIndex].x}, {currentMesh.uv[greenIndex].y})"); + EditorGUILayout.LabelField("Blue vertex", $"Index: {blueIndex}, UV: ({currentMesh.uv[blueIndex].x}, {currentMesh.uv[blueIndex].y})"); + } + + private void OnSceneGUI(SceneView sceneView) + { + if (currentMesh == null) { + return; + } + + int index1 = currentMesh.triangles[currentFace * 3]; + int index2 = currentMesh.triangles[currentFace * 3 + 1]; + int index3 = currentMesh.triangles[currentFace * 3 + 2]; + + if (currentMeshFilter != null) + { + p1 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index1]); + p2 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index2]); + p3 = currentMeshFilter.transform.TransformPoint(currentMesh.vertices[index3]); + } + else if (currentSkinnedMeshRenderer != null) + { + p1 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index1]); + p2 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index2]); + p3 = currentSkinnedMeshRenderer.transform.TransformPoint(currentMesh.vertices[index3]); + } + + Handles.color = Color.red; + Handles.SphereHandleCap(0, p1, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p1), EventType.Repaint); + Handles.color = Color.green; + Handles.SphereHandleCap(0, p2, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p2), EventType.Repaint); + Handles.color = Color.blue; + Handles.SphereHandleCap(0, p3, Quaternion.identity, 0.2f * HandleUtility.GetHandleSize(p3), EventType.Repaint); + + Handles.color = Color.white; + Handles.DrawDottedLine(p1, p2, 5f); + Handles.DrawDottedLine(p2, p3, 5f); + Handles.DrawDottedLine(p3, p1, 5f); + + if (labelStyle == null) + { + labelStyle = new GUIStyle(GUI.skin.label); + labelStyle.normal.textColor = Color.white; + labelStyle.fixedWidth = 40; + labelStyle.fixedHeight = 20; + labelStyle.alignment = TextAnchor.MiddleCenter; + labelStyle.fontSize = 12; + labelStyle.clipping = TextClipping.Overflow; + } + + Handles.Label(p1, index1.ToString(), labelStyle); + Handles.Label(p2, index2.ToString(), labelStyle); + Handles.Label(p3, index3.ToString(), labelStyle); + + sceneView.Repaint(); + } + + private void OnInspectorUpdate() + { + Repaint(); + } + + } + +} diff --git a/Editor/MeshDebugger.cs.meta b/Editor/MeshDebugger.cs.meta new file mode 100644 index 0000000..7ed08e2 --- /dev/null +++ b/Editor/MeshDebugger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08d9ecff8983ad744aa14c4afcc181a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 4869219cb6cf72854a820d5c72f908d9ab54c2f8 Mon Sep 17 00:00:00 2001 From: Adam Graham Date: 2026年6月16日 10:45:45 -0500 Subject: [PATCH 5/5] Update package description --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 527b510..bea121f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![](https://img.shields.io/badge/github-repo-blue?logo=github)](https://github.com/zigurous/unity-graphics-utils) [![](https://img.shields.io/github/package-json/v/zigurous/unity-graphics-utils)](https://github.com/zigurous/unity-graphics-utils/releases) [![](https://img.shields.io/badge/docs-link-success)](https://docs.zigurous.com/com.zigurous.graphics) [![](https://img.shields.io/github/license/zigurous/unity-graphics-utils)](https://github.com/zigurous/unity-graphics-utils/blob/main/LICENSE.md) -The **Graphics Utils** package provides scripts and utilities for graphics and rendering purposes in Unity projects. The package is still early in development, and more functionality will be added over time. +A utility library for handling graphics and rendering in Unity projects. ## Reference diff --git a/package.json b/package.json index 93e7167..225e2c9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.zigurous.graphics", "version": "0.4.0", "displayName": "Graphics Utils", - "description": "The Graphics Utils package provides scripts and utilities for graphics and rendering purposes in Unity projects.", + "description": "A utility library for handling graphics and rendering in Unity projects.", "unity": "2022.3", "repository": "https://github.com/zigurous/unity-graphics-utils", "documentationUrl": "https://docs.zigurous.com/com.zigurous.graphics",

AltStyle によって変換されたページ (->オリジナル) /