├── .gitattributes ├── .gitignore ├── Assets ├── Knitwear Shader.meta ├── Knitwear Shader │ ├── Editor.meta │ ├── Editor │ │ ├── ShaderGUI.meta │ │ └── ShaderGUI │ │ │ ├── KnitwearGUI.cs │ │ │ ├── KnitwearGUI.cs.meta │ │ │ ├── Shaders.meta │ │ │ └── Shaders │ │ │ ├── KnitwearLitShader.cs │ │ │ ├── KnitwearLitShader.cs.meta │ │ │ ├── KnitwearUnlitShader.cs │ │ │ └── KnitwearUnlitShader.cs.meta │ ├── Shaders.meta │ ├── Shaders │ │ ├── KnitwearCommon.hlsl │ │ ├── KnitwearCommon.hlsl.meta │ │ ├── KnitwearLit.shader │ │ ├── KnitwearLit.shader.meta │ │ ├── KnitwearLitForwardPass.hlsl │ │ ├── KnitwearLitForwardPass.hlsl.meta │ │ ├── KnitwearLitInput.hlsl │ │ ├── KnitwearLitInput.hlsl.meta │ │ ├── KnitwearUnlit.shader │ │ ├── KnitwearUnlit.shader.meta │ │ ├── KnitwearUnlitInput.hlsl │ │ └── KnitwearUnlitInput.hlsl.meta │ ├── Textures.meta │ └── Textures │ │ ├── Knitwear_Diffuse.png │ │ ├── Knitwear_Diffuse.png.meta │ │ ├── Knitwear_Normal.png │ │ ├── Knitwear_Normal.png.meta │ │ ├── Knitwear_Occulsion.png │ │ └── Knitwear_Occulsion.png.meta ├── Presets.meta ├── Presets │ ├── AudioCompressedInMemory.preset │ ├── AudioCompressedInMemory.preset.meta │ ├── AudioStreaming.preset │ ├── AudioStreaming.preset.meta │ ├── Defaults.meta │ ├── Defaults │ │ ├── AlbedoTexture_Default.preset │ │ ├── AlbedoTexture_Default.preset.meta │ │ ├── AudioDecompressOnLoad.preset │ │ ├── AudioDecompressOnLoad.preset.meta │ │ ├── DirectionalLight_Default.preset │ │ └── DirectionalLight_Default.preset.meta │ ├── NormalTexture.preset │ ├── NormalTexture.preset.meta │ ├── UtilityTexture.preset │ └── UtilityTexture.preset.meta ├── Sample Scenes.meta ├── Sample Scenes │ ├── HDRI.meta │ ├── HDRI │ │ ├── Ballroom.mat │ │ ├── Ballroom.mat.meta │ │ ├── ballroom_4k.hdr │ │ └── ballroom_4k.hdr.meta │ ├── Masterpieces.meta │ ├── Masterpieces │ │ ├── De sterrennacht.jpg │ │ ├── De sterrennacht.jpg.meta │ │ ├── De sterrennacht_mat.mat │ │ ├── De sterrennacht_mat.mat.meta │ │ ├── Het meisje met de parel.jpg │ │ ├── Het meisje met de parel.jpg.meta │ │ ├── Het meisje met de parel_mat.mat │ │ ├── Het meisje met de parel_mat.mat.meta │ │ ├── La Gioconda.jpg │ │ ├── La Gioconda.jpg.meta │ │ ├── La Gioconda_mat.mat │ │ ├── La Gioconda_mat.mat.meta │ │ ├── Zonnebloemen.jpg │ │ ├── Zonnebloemen.jpg.meta │ │ ├── Zonnebloemen_mat.mat │ │ ├── Zonnebloemen_mat.mat.meta │ │ ├── 美大ボール.jpg │ │ ├── 美大ボール.jpg.meta │ │ ├── 美大ボール_mat.mat │ │ └── 美大ボール_mat.mat.meta │ ├── Pillow.meta │ ├── Pillow │ │ ├── pillow.fbx │ │ ├── pillow.fbx.meta │ │ ├── pillow_brown_mat.mat │ │ ├── pillow_brown_mat.mat.meta │ │ ├── pillow_gray_mat.mat │ │ ├── pillow_gray_mat.mat.meta │ │ ├── pillow_mat.mat │ │ ├── pillow_mat.mat.meta │ │ ├── pillow_yellow_mat.mat │ │ └── pillow_yellow_mat.mat.meta │ ├── Sample Scene.meta │ ├── Sample Scene.unity │ ├── Sample Scene.unity.meta │ └── Sample Scene │ │ ├── LightingData.asset │ │ ├── LightingData.asset.meta │ │ ├── Post-process Volume Profile.asset │ │ ├── Post-process Volume Profile.asset.meta │ │ ├── ReflectionProbe-0.exr │ │ └── ReflectionProbe-0.exr.meta ├── Settings.meta └── Settings │ ├── UniversalRenderPipelineAsset.asset │ ├── UniversalRenderPipelineAsset.asset.meta │ ├── UniversalRenderPipelineAsset_Renderer.asset │ └── UniversalRenderPipelineAsset_Renderer.asset.meta ├── Images ├── screenshot-udk-sphere.gif ├── screenshots-pillows.png └── screenshots-sunflowers.png ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── URPProjectSettings.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text 2 | 3 | *.cs text eol=lf diff=csharp 4 | *.shader text eol=lf 5 | *.cginc text eol=lf 6 | *.hlsl text eol=lf 7 | *.compute text eol=lf 8 | 9 | *.meta text eol=lf 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.suo 39 | *.tmp 40 | *.user 41 | *.userprefs 42 | *.pidb 43 | *.booproj 44 | *.svd 45 | *.pdb 46 | *.mdb 47 | *.opendb 48 | *.VC.db 49 | 50 | # Unity3D generated meta files 51 | *.pidb.meta 52 | *.pdb.meta 53 | *.mdb.meta 54 | 55 | # Unity3D generated file on crash reports 56 | sysinfo.txt 57 | 58 | # Builds 59 | *.apk 60 | *.aab 61 | *.unitypackage 62 | 63 | # Crashlytics generated file 64 | crashlytics-build.properties 65 | 66 | # Packed Addressables 67 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 68 | 69 | # Temporary auto-generated Android Assets 70 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 71 | /[Aa]ssets/[Ss]treamingAssets/aa/* -------------------------------------------------------------------------------- /Assets/Knitwear Shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4905f8894d223534f946fb6b1fb8c2aa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 579ebefc867ce15488f85df78fded5d9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6804c82883b0b1a469373e3de06aef00 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/KnitwearGUI.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Rendering; 3 | 4 | namespace UnityEditor.Rendering.Universal.ShaderGUI 5 | { 6 | public static class KnitwearGUI 7 | { 8 | public static class Styles 9 | { 10 | public static GUIContent knitwearMapText = 11 | new GUIContent("Knitwear Map", "Sets a Texture map to use for knitwear texture."); 12 | 13 | public static GUIContent knitwearDivisionText = 14 | new GUIContent("Division", "Controls the scaling of the knitwear texture."); 15 | 16 | public static GUIContent knitwearAspectText = 17 | new GUIContent("Aspect", "Controls the rectangle aspect ratio of the knitwear texture."); 18 | 19 | public static GUIContent knitwearShearText = 20 | new GUIContent("Shear", "Controls the shear amount on vertical direction of the knitwear texture."); 21 | 22 | public static GUIContent knitwearDistortionText = 23 | new GUIContent("Distortion", "When enabled, the knitwear texture distortion randomly."); 24 | 25 | public static GUIContent knitwearDistortionStrengthText = 26 | new GUIContent("Strength", "Controls the distortion amount of the knitwear texture."); 27 | } 28 | 29 | public struct KnitwearProperties 30 | { 31 | public MaterialProperty knitwearMap; 32 | public MaterialProperty knitwearDivision; 33 | public MaterialProperty knitwearAspect; 34 | public MaterialProperty knitwearShear; 35 | public MaterialProperty knitwearDistortion; 36 | public MaterialProperty knitwearDistortionStrength; 37 | 38 | public KnitwearProperties(MaterialProperty[] properties) 39 | { 40 | knitwearMap = BaseShaderGUI.FindProperty("_KnitwearMap", properties, false); 41 | knitwearDivision = BaseShaderGUI.FindProperty("_KnitwearDivision", properties, false); 42 | knitwearAspect = BaseShaderGUI.FindProperty("_KnitwearAspect", properties, false); 43 | knitwearShear = BaseShaderGUI.FindProperty("_KnitwearShear", properties, false); 44 | knitwearDistortion = BaseShaderGUI.FindProperty("_KnitwearDistortion", properties, false); 45 | knitwearDistortionStrength = BaseShaderGUI.FindProperty("_KnitwearDistortionStrength", properties, false); 46 | } 47 | } 48 | 49 | public static void DoKnitwearArea(KnitwearProperties properties, MaterialEditor materialEditor) 50 | { 51 | materialEditor.TexturePropertySingleLine(Styles.knitwearMapText, properties.knitwearMap, null); 52 | 53 | EditorGUI.indentLevel++; 54 | materialEditor.ShaderProperty(properties.knitwearDivision, Styles.knitwearDivisionText); 55 | materialEditor.ShaderProperty(properties.knitwearAspect, Styles.knitwearAspectText); 56 | materialEditor.ShaderProperty(properties.knitwearShear, Styles.knitwearShearText); 57 | 58 | EditorGUI.BeginChangeCheck(); 59 | bool distortion = properties.knitwearDistortion.floatValue != 0.0f; 60 | distortion = EditorGUILayout.Toggle(Styles.knitwearDistortionText, distortion); 61 | if (EditorGUI.EndChangeCheck()) 62 | properties.knitwearDistortion.floatValue = distortion ? 1.0f : 0.0f; 63 | 64 | EditorGUI.BeginDisabledGroup(!distortion); 65 | EditorGUI.indentLevel++; 66 | materialEditor.ShaderProperty(properties.knitwearDistortionStrength, Styles.knitwearDistortionStrengthText); 67 | EditorGUI.indentLevel--; 68 | EditorGUI.EndDisabledGroup(); 69 | 70 | EditorGUI.indentLevel--; 71 | } 72 | 73 | public static void SetMaterialKeywords(Material material) 74 | { 75 | if (material.HasProperty("_KnitwearDistortion")) 76 | CoreUtils.SetKeyword(material, "_KNITWEAR_DISTORTION_ON", material.GetFloat("_KnitwearDistortion") != 0.0f); 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/KnitwearGUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81c5f9232c6a4724ab8640bc03913e38 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 84cde4c2879dc3045b2039bff8baeb5c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/Shaders/KnitwearLitShader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Rendering; 4 | using UnityEditor.Rendering.Universal; 5 | 6 | namespace UnityEditor.Rendering.Universal.ShaderGUI 7 | { 8 | internal class KnitwearLitShader : BaseShaderGUI 9 | { 10 | // Properties 11 | private LitGUI.LitProperties litProperties; 12 | private KnitwearGUI.KnitwearProperties knitwearProperties; 13 | 14 | // collect properties from the material properties 15 | public override void FindProperties(MaterialProperty[] properties) 16 | { 17 | base.FindProperties(properties); 18 | litProperties = new LitGUI.LitProperties(properties); 19 | knitwearProperties = new KnitwearGUI.KnitwearProperties(properties); 20 | } 21 | 22 | // material changed check 23 | public override void MaterialChanged(Material material) 24 | { 25 | if (material == null) 26 | throw new ArgumentNullException("material"); 27 | 28 | SetMaterialKeywords(material, LitGUI.SetMaterialKeywords, KnitwearGUI.SetMaterialKeywords); 29 | } 30 | 31 | // material main surface options 32 | public override void DrawSurfaceOptions(Material material) 33 | { 34 | if (material == null) 35 | throw new ArgumentNullException("material"); 36 | 37 | // Use default labelWidth 38 | EditorGUIUtility.labelWidth = 0f; 39 | 40 | // Detect any changes to the material 41 | EditorGUI.BeginChangeCheck(); 42 | if (litProperties.workflowMode != null) 43 | { 44 | DoPopup(LitGUI.Styles.workflowModeText, litProperties.workflowMode, Enum.GetNames(typeof(LitGUI.WorkflowMode))); 45 | } 46 | if (EditorGUI.EndChangeCheck()) 47 | { 48 | foreach (var obj in blendModeProp.targets) 49 | MaterialChanged((Material)obj); 50 | } 51 | base.DrawSurfaceOptions(material); 52 | } 53 | 54 | // material main surface inputs 55 | public override void DrawSurfaceInputs(Material material) 56 | { 57 | base.DrawSurfaceInputs(material); 58 | KnitwearGUI.DoKnitwearArea(knitwearProperties, materialEditor); 59 | LitGUI.Inputs(litProperties, materialEditor, material); 60 | DrawEmissionProperties(material, true); 61 | DrawTileOffset(materialEditor, baseMapProp); 62 | } 63 | 64 | // material main advanced options 65 | public override void DrawAdvancedOptions(Material material) 66 | { 67 | if (litProperties.reflections != null && litProperties.highlights != null) 68 | { 69 | EditorGUI.BeginChangeCheck(); 70 | materialEditor.ShaderProperty(litProperties.highlights, LitGUI.Styles.highlightsText); 71 | materialEditor.ShaderProperty(litProperties.reflections, LitGUI.Styles.reflectionsText); 72 | if (EditorGUI.EndChangeCheck()) 73 | { 74 | MaterialChanged(material); 75 | } 76 | } 77 | 78 | base.DrawAdvancedOptions(material); 79 | } 80 | 81 | public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader) 82 | { 83 | if (material == null) 84 | throw new ArgumentNullException("material"); 85 | 86 | // _Emission property is lost after assigning Standard shader to the material 87 | // thus transfer it before assigning the new shader 88 | if (material.HasProperty("_Emission")) 89 | { 90 | material.SetColor("_EmissionColor", material.GetColor("_Emission")); 91 | } 92 | 93 | base.AssignNewShaderToMaterial(material, oldShader, newShader); 94 | 95 | if (oldShader == null || !oldShader.name.Contains("Legacy Shaders/")) 96 | { 97 | SetupMaterialBlendMode(material); 98 | return; 99 | } 100 | 101 | SurfaceType surfaceType = SurfaceType.Opaque; 102 | BlendMode blendMode = BlendMode.Alpha; 103 | if (oldShader.name.Contains("/Transparent/Cutout/")) 104 | { 105 | surfaceType = SurfaceType.Opaque; 106 | material.SetFloat("_AlphaClip", 1); 107 | } 108 | else if (oldShader.name.Contains("/Transparent/")) 109 | { 110 | // NOTE: legacy shaders did not provide physically based transparency 111 | // therefore Fade mode 112 | surfaceType = SurfaceType.Transparent; 113 | blendMode = BlendMode.Alpha; 114 | } 115 | material.SetFloat("_Surface", (float)surfaceType); 116 | material.SetFloat("_Blend", (float)blendMode); 117 | 118 | if (oldShader.name.Equals("Standard (Specular setup)")) 119 | { 120 | material.SetFloat("_WorkflowMode", (float)LitGUI.WorkflowMode.Specular); 121 | Texture texture = material.GetTexture("_SpecGlossMap"); 122 | if (texture != null) 123 | material.SetTexture("_MetallicSpecGlossMap", texture); 124 | } 125 | else 126 | { 127 | material.SetFloat("_WorkflowMode", (float)LitGUI.WorkflowMode.Metallic); 128 | Texture texture = material.GetTexture("_MetallicGlossMap"); 129 | if (texture != null) 130 | material.SetTexture("_MetallicSpecGlossMap", texture); 131 | } 132 | 133 | MaterialChanged(material); 134 | } 135 | } 136 | } -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/Shaders/KnitwearLitShader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fc367dcc52b9f64c81961e959dcacdc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/Shaders/KnitwearUnlitShader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace UnityEditor.Rendering.Universal.ShaderGUI 5 | { 6 | internal class KnitwearUnlitShader : BaseShaderGUI 7 | { 8 | // Properties 9 | private KnitwearGUI.KnitwearProperties knitwearProperties; 10 | 11 | // collect properties from the material properties 12 | public override void FindProperties(MaterialProperty[] properties) 13 | { 14 | base.FindProperties(properties); 15 | knitwearProperties = new KnitwearGUI.KnitwearProperties(properties); 16 | } 17 | 18 | // material changed check 19 | public override void MaterialChanged(Material material) 20 | { 21 | if (material == null) 22 | throw new ArgumentNullException("material"); 23 | 24 | SetMaterialKeywords(material, KnitwearGUI.SetMaterialKeywords); 25 | } 26 | 27 | // material main surface options 28 | public override void DrawSurfaceOptions(Material material) 29 | { 30 | if (material == null) 31 | throw new ArgumentNullException("material"); 32 | 33 | // Use default labelWidth 34 | EditorGUIUtility.labelWidth = 0f; 35 | 36 | // Detect any changes to the material 37 | EditorGUI.BeginChangeCheck(); 38 | { 39 | base.DrawSurfaceOptions(material); 40 | } 41 | if (EditorGUI.EndChangeCheck()) 42 | { 43 | foreach (var obj in blendModeProp.targets) 44 | MaterialChanged((Material)obj); 45 | } 46 | } 47 | 48 | // material main surface inputs 49 | public override void DrawSurfaceInputs(Material material) 50 | { 51 | base.DrawSurfaceInputs(material); 52 | KnitwearGUI.DoKnitwearArea(knitwearProperties, materialEditor); 53 | DrawTileOffset(materialEditor, baseMapProp); 54 | } 55 | 56 | public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader) 57 | { 58 | if (material == null) 59 | throw new ArgumentNullException("material"); 60 | 61 | // _Emission property is lost after assigning Standard shader to the material 62 | // thus transfer it before assigning the new shader 63 | if (material.HasProperty("_Emission")) 64 | { 65 | material.SetColor("_EmissionColor", material.GetColor("_Emission")); 66 | } 67 | 68 | base.AssignNewShaderToMaterial(material, oldShader, newShader); 69 | 70 | if (oldShader == null || !oldShader.name.Contains("Legacy Shaders/")) 71 | { 72 | SetupMaterialBlendMode(material); 73 | return; 74 | } 75 | 76 | SurfaceType surfaceType = SurfaceType.Opaque; 77 | BlendMode blendMode = BlendMode.Alpha; 78 | if (oldShader.name.Contains("/Transparent/Cutout/")) 79 | { 80 | surfaceType = SurfaceType.Opaque; 81 | material.SetFloat("_AlphaClip", 1); 82 | } 83 | else if (oldShader.name.Contains("/Transparent/")) 84 | { 85 | // NOTE: legacy shaders did not provide physically based transparency 86 | // therefore Fade mode 87 | surfaceType = SurfaceType.Transparent; 88 | blendMode = BlendMode.Alpha; 89 | } 90 | material.SetFloat("_Surface", (float)surfaceType); 91 | material.SetFloat("_Blend", (float)blendMode); 92 | 93 | MaterialChanged(material); 94 | } 95 | } 96 | } -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Editor/ShaderGUI/Shaders/KnitwearUnlitShader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc8a3a91361b73142a1df691491ffa80 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77ca07c1f3c7d3440bd2af0c74f468d0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearCommon.hlsl: -------------------------------------------------------------------------------- 1 | #ifndef UNIVERSAL_KNITWEAR_COMMON_INCLUDED 2 | #define UNIVERSAL_KNITWEAR_COMMON_INCLUDED 3 | 4 | float2 GradientNoiseDir(float2 p) 5 | { 6 | p = p % 289; 7 | float x = (34 * p.x + 1) * p.x % 289 + p.y; 8 | x = (34 * x + 1) * x % 289; 9 | x = frac(x / 41) * 2 - 1; 10 | return normalize(float2(x - floor(x + 0.5), abs(x) - 0.5)); 11 | } 12 | 13 | float GradientNoise(float2 p) 14 | { 15 | float2 ip = floor(p); 16 | float2 fp = frac(p); 17 | float d00 = dot(GradientNoiseDir(ip), fp); 18 | float d01 = dot(GradientNoiseDir(ip + float2(0, 1)), fp - float2(0, 1)); 19 | float d10 = dot(GradientNoiseDir(ip + float2(1, 0)), fp - float2(1, 0)); 20 | float d11 = dot(GradientNoiseDir(ip + float2(1, 1)), fp - float2(1, 1)); 21 | fp = fp * fp * fp * (fp * (fp * 6 - 15) + 10); 22 | return lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x); 23 | } 24 | 25 | void ApplyDistortion(inout float2 uv, half division, half distortion) 26 | { 27 | float noise = GradientNoise(uv * division * 0.005); 28 | noise *= distortion * 50 / division; 29 | 30 | float noiseDetail = GradientNoise(uv * division * 0.04); 31 | noiseDetail *= distortion * 6.25 / division; 32 | 33 | uv += noise + noiseDetail; 34 | } 35 | 36 | void KnitwearCoordinate(inout float2 uv, out float2 cell, half division, half shear, half distortion = 0) 37 | { 38 | #if defined(_KNITWEAR_DISTORTION_ON) 39 | ApplyDistortion(uv, division, distortion); 40 | #endif 41 | 42 | float verticalOffset = distance(frac(uv.x), 0.5) * shear; 43 | uv.y += verticalOffset; 44 | 45 | cell = floor(uv * float2(2.0, 1.0)); 46 | cell += float2(0.5, 0.5); 47 | cell *= float2(0.5, 1.0); 48 | } 49 | 50 | #endif // UNIVERSAL_KNITWEAR_COMMON_INCLUDED -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearCommon.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7454db15fef4d4747aa988bbd3a1f63c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLit.shader: -------------------------------------------------------------------------------- 1 | Shader "Universal Render Pipeline/Knitwear/Lit" 2 | { 3 | Properties 4 | { 5 | // Specular vs Metallic workflow 6 | [HideInInspector] _WorkflowMode("WorkflowMode", Float) = 1.0 7 | 8 | [MainColor] _BaseColor("Color", Color) = (1,1,1,1) 9 | [MainTexture] _BaseMap("Albedo", 2D) = "white" {} 10 | 11 | _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 12 | 13 | _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5 14 | _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0 15 | _SmoothnessTextureChannel("Smoothness texture channel", Float) = 0 16 | 17 | _Metallic("Metallic", Range(0.0, 1.0)) = 0.0 18 | _MetallicGlossMap("Metallic", 2D) = "white" {} 19 | 20 | _SpecColor("Specular", Color) = (0.2, 0.2, 0.2) 21 | _SpecGlossMap("Specular", 2D) = "white" {} 22 | 23 | [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0 24 | [ToggleOff] _EnvironmentReflections("Environment Reflections", Float) = 1.0 25 | 26 | _BumpScale("Scale", Float) = 1.0 27 | _BumpMap("Normal Map", 2D) = "bump" {} 28 | 29 | _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0 30 | _OcclusionMap("Occlusion", 2D) = "white" {} 31 | 32 | _EmissionColor("Color", Color) = (0,0,0) 33 | _EmissionMap("Emission", 2D) = "white" {} 34 | 35 | [NoScaleOffset] _KnitwearMap("Knitwear Map", 2D) = "white" {} 36 | _KnitwearDivision("Division", Range(1, 200)) = 100.0 37 | _KnitwearAspect("Aspect", Range(0.2, 5)) = 1.0 38 | _KnitwearShear("Shear", Range(-2.0, 2.0)) = 1.0 39 | [Toggle(_KNITWEAR_DISTORTION_ON)] _KnitwearDistortion("Distortion", Float) = 1.0 40 | _KnitwearDistortionStrength("Strength", Range(0.0, 1.0)) = 0.5 41 | 42 | // Blending state 43 | [HideInInspector] _Surface("__surface", Float) = 0.0 44 | [HideInInspector] _Blend("__blend", Float) = 0.0 45 | [HideInInspector] _AlphaClip("__clip", Float) = 0.0 46 | [HideInInspector] _SrcBlend("__src", Float) = 1.0 47 | [HideInInspector] _DstBlend("__dst", Float) = 0.0 48 | [HideInInspector] _ZWrite("__zw", Float) = 1.0 49 | [HideInInspector] _Cull("__cull", Float) = 2.0 50 | 51 | _ReceiveShadows("Receive Shadows", Float) = 1.0 52 | // Editmode props 53 | [HideInInspector] _QueueOffset("Queue offset", Float) = 0.0 54 | 55 | // ObsoleteProperties 56 | [HideInInspector] _MainTex("BaseMap", 2D) = "white" {} 57 | [HideInInspector] _Color("Base Color", Color) = (1, 1, 1, 1) 58 | [HideInInspector] _GlossMapScale("Smoothness", Float) = 0.0 59 | [HideInInspector] _Glossiness("Smoothness", Float) = 0.0 60 | [HideInInspector] _GlossyReflections("EnvironmentReflections", Float) = 0.0 61 | } 62 | 63 | SubShader 64 | { 65 | // Universal Pipeline tag is required. If Universal render pipeline is not set in the graphics settings 66 | // this Subshader will fail. One can add a subshader below or fallback to Standard built-in to make this 67 | // material work with both Universal Render Pipeline and Builtin Unity Pipeline 68 | Tags{"RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" "IgnoreProjector" = "True"} 69 | LOD 300 70 | 71 | // ------------------------------------------------------------------ 72 | // Forward pass. Shades all light in a single pass. GI + emission + Fog 73 | Pass 74 | { 75 | // Lightmode matches the ShaderPassName set in UniversalRenderPipeline.cs. SRPDefaultUnlit and passes with 76 | // no LightMode tag are also rendered by Universal Render Pipeline 77 | Name "ForwardLit" 78 | Tags{"LightMode" = "UniversalForward"} 79 | 80 | Blend[_SrcBlend][_DstBlend] 81 | ZWrite[_ZWrite] 82 | Cull[_Cull] 83 | 84 | HLSLPROGRAM 85 | // Required to compile gles 2.0 with standard SRP library 86 | // All shaders must be compiled with HLSLcc and currently only gles is not using HLSLcc by default 87 | #pragma prefer_hlslcc gles 88 | #pragma exclude_renderers d3d11_9x 89 | #pragma target 2.0 90 | 91 | // ------------------------------------- 92 | // Material Keywords 93 | #pragma shader_feature _NORMALMAP 94 | #pragma shader_feature _ALPHATEST_ON 95 | #pragma shader_feature _ALPHAPREMULTIPLY_ON 96 | #pragma shader_feature _EMISSION 97 | #pragma shader_feature _METALLICSPECGLOSSMAP 98 | #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 99 | #pragma shader_feature _OCCLUSIONMAP 100 | #pragma shader_feature _KNITWEAR_DISTORTION_ON 101 | 102 | #pragma shader_feature _SPECULARHIGHLIGHTS_OFF 103 | #pragma shader_feature _ENVIRONMENTREFLECTIONS_OFF 104 | #pragma shader_feature _SPECULAR_SETUP 105 | #pragma shader_feature _RECEIVE_SHADOWS_OFF 106 | 107 | // ------------------------------------- 108 | // Universal Pipeline keywords 109 | #pragma multi_compile _ _MAIN_LIGHT_SHADOWS 110 | #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE 111 | #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS 112 | #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS 113 | #pragma multi_compile _ _SHADOWS_SOFT 114 | #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE 115 | 116 | // ------------------------------------- 117 | // Unity defined keywords 118 | #pragma multi_compile _ DIRLIGHTMAP_COMBINED 119 | #pragma multi_compile _ LIGHTMAP_ON 120 | #pragma multi_compile_fog 121 | 122 | //-------------------------------------- 123 | // GPU Instancing 124 | #pragma multi_compile_instancing 125 | 126 | #pragma vertex LitPassVertex 127 | #pragma fragment LitPassFragment 128 | 129 | #include "KnitwearLitInput.hlsl" 130 | #include "KnitwearLitForwardPass.hlsl" 131 | ENDHLSL 132 | } 133 | 134 | Pass 135 | { 136 | Name "ShadowCaster" 137 | Tags{"LightMode" = "ShadowCaster"} 138 | 139 | ZWrite On 140 | ZTest LEqual 141 | Cull[_Cull] 142 | 143 | HLSLPROGRAM 144 | // Required to compile gles 2.0 with standard srp library 145 | #pragma prefer_hlslcc gles 146 | #pragma exclude_renderers d3d11_9x 147 | #pragma target 2.0 148 | 149 | // ------------------------------------- 150 | // Material Keywords 151 | #pragma shader_feature _ALPHATEST_ON 152 | 153 | //-------------------------------------- 154 | // GPU Instancing 155 | #pragma multi_compile_instancing 156 | #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 157 | 158 | #pragma vertex ShadowPassVertex 159 | #pragma fragment ShadowPassFragment 160 | 161 | #include "KnitwearLitInput.hlsl" 162 | #include "Packages/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl" 163 | ENDHLSL 164 | } 165 | 166 | Pass 167 | { 168 | Name "DepthOnly" 169 | Tags{"LightMode" = "DepthOnly"} 170 | 171 | ZWrite On 172 | ColorMask 0 173 | Cull[_Cull] 174 | 175 | HLSLPROGRAM 176 | // Required to compile gles 2.0 with standard srp library 177 | #pragma prefer_hlslcc gles 178 | #pragma exclude_renderers d3d11_9x 179 | #pragma target 2.0 180 | 181 | #pragma vertex DepthOnlyVertex 182 | #pragma fragment DepthOnlyFragment 183 | 184 | // ------------------------------------- 185 | // Material Keywords 186 | #pragma shader_feature _ALPHATEST_ON 187 | #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 188 | 189 | //-------------------------------------- 190 | // GPU Instancing 191 | #pragma multi_compile_instancing 192 | 193 | #include "KnitwearLitInput.hlsl" 194 | #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" 195 | ENDHLSL 196 | } 197 | 198 | // This pass it not used during regular rendering, only for lightmap baking. 199 | Pass 200 | { 201 | Name "Meta" 202 | Tags{"LightMode" = "Meta"} 203 | 204 | Cull Off 205 | 206 | HLSLPROGRAM 207 | // Required to compile gles 2.0 with standard srp library 208 | #pragma prefer_hlslcc gles 209 | #pragma exclude_renderers d3d11_9x 210 | 211 | #pragma vertex UniversalVertexMeta 212 | #pragma fragment UniversalFragmentMeta 213 | 214 | #pragma shader_feature _SPECULAR_SETUP 215 | #pragma shader_feature _EMISSION 216 | #pragma shader_feature _METALLICSPECGLOSSMAP 217 | #pragma shader_feature _ALPHATEST_ON 218 | #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 219 | 220 | #pragma shader_feature _SPECGLOSSMAP 221 | 222 | #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" 223 | #include "Packages/com.unity.render-pipelines.universal/Shaders/LitMetaPass.hlsl" 224 | 225 | ENDHLSL 226 | } 227 | Pass 228 | { 229 | Name "Universal2D" 230 | Tags{ "LightMode" = "Universal2D" } 231 | 232 | Blend[_SrcBlend][_DstBlend] 233 | ZWrite[_ZWrite] 234 | Cull[_Cull] 235 | 236 | HLSLPROGRAM 237 | // Required to compile gles 2.0 with standard srp library 238 | #pragma prefer_hlslcc gles 239 | #pragma exclude_renderers d3d11_9x 240 | 241 | #pragma vertex vert 242 | #pragma fragment frag 243 | #pragma shader_feature _ALPHATEST_ON 244 | #pragma shader_feature _ALPHAPREMULTIPLY_ON 245 | 246 | #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" 247 | #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Universal2D.hlsl" 248 | ENDHLSL 249 | } 250 | 251 | 252 | } 253 | FallBack "Hidden/Universal Render Pipeline/FallbackError" 254 | CustomEditor "UnityEditor.Rendering.Universal.ShaderGUI.KnitwearLitShader" 255 | } -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLit.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f0b4eff2a81ea847b49f092a0356d2a 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLitForwardPass.hlsl: -------------------------------------------------------------------------------- 1 | #ifndef UNIVERSAL_FORWARD_KNITWEAR_LIT_PASS_INCLUDED 2 | #define UNIVERSAL_FORWARD_KNITWEAR_LIT_PASS_INCLUDED 3 | 4 | #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" 5 | 6 | struct Attributes 7 | { 8 | float4 positionOS : POSITION; 9 | float3 normalOS : NORMAL; 10 | float4 tangentOS : TANGENT; 11 | float2 texcoord : TEXCOORD0; 12 | float2 lightmapUV : TEXCOORD1; 13 | UNITY_VERTEX_INPUT_INSTANCE_ID 14 | }; 15 | 16 | struct Varyings 17 | { 18 | float2 uv : TEXCOORD0; 19 | DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 1); 20 | 21 | #if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR) 22 | float3 positionWS : TEXCOORD2; 23 | #endif 24 | 25 | float3 normalWS : TEXCOORD3; 26 | #ifdef _NORMALMAP 27 | float4 tangentWS : TEXCOORD4; // xyz: tangent, w: sign 28 | #endif 29 | float3 viewDirWS : TEXCOORD5; 30 | 31 | half4 fogFactorAndVertexLight : TEXCOORD6; // x: fogFactor, yzw: vertex light 32 | 33 | #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) 34 | float4 shadowCoord : TEXCOORD7; 35 | #endif 36 | 37 | float4 positionCS : SV_POSITION; 38 | UNITY_VERTEX_INPUT_INSTANCE_ID 39 | UNITY_VERTEX_OUTPUT_STEREO 40 | }; 41 | 42 | void InitializeInputData(Varyings input, half3 normalTS, out InputData inputData) 43 | { 44 | inputData = (InputData)0; 45 | 46 | #if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR) 47 | inputData.positionWS = input.positionWS; 48 | #endif 49 | 50 | half3 viewDirWS = SafeNormalize(input.viewDirWS); 51 | #ifdef _NORMALMAP 52 | float sgn = input.tangentWS.w; // should be either +1 or -1 53 | float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); 54 | inputData.normalWS = TransformTangentToWorld(normalTS, half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz)); 55 | #else 56 | inputData.normalWS = input.normalWS; 57 | #endif 58 | 59 | inputData.normalWS = NormalizeNormalPerPixel(inputData.normalWS); 60 | inputData.viewDirectionWS = viewDirWS; 61 | 62 | #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) 63 | inputData.shadowCoord = input.shadowCoord; 64 | #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS) 65 | inputData.shadowCoord = TransformWorldToShadowCoord(inputData.positionWS); 66 | #else 67 | inputData.shadowCoord = float4(0, 0, 0, 0); 68 | #endif 69 | 70 | inputData.fogCoord = input.fogFactorAndVertexLight.x; 71 | inputData.vertexLighting = input.fogFactorAndVertexLight.yzw; 72 | inputData.bakedGI = SAMPLE_GI(input.lightmapUV, input.vertexSH, inputData.normalWS); 73 | } 74 | 75 | /////////////////////////////////////////////////////////////////////////////// 76 | // Vertex and Fragment functions // 77 | /////////////////////////////////////////////////////////////////////////////// 78 | 79 | // Used in Standard (Physically Based) shader 80 | Varyings LitPassVertex(Attributes input) 81 | { 82 | Varyings output = (Varyings)0; 83 | 84 | UNITY_SETUP_INSTANCE_ID(input); 85 | UNITY_TRANSFER_INSTANCE_ID(input, output); 86 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); 87 | 88 | VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); 89 | 90 | // normalWS and tangentWS already normalize. 91 | // this is required to avoid skewing the direction during interpolation 92 | // also required for per-vertex lighting and SH evaluation 93 | VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS, input.tangentOS); 94 | float3 viewDirWS = GetCameraPositionWS() - vertexInput.positionWS; 95 | half3 vertexLight = VertexLighting(vertexInput.positionWS, normalInput.normalWS); 96 | half fogFactor = ComputeFogFactor(vertexInput.positionCS.z); 97 | 98 | output.uv = TRANSFORM_TEX(input.texcoord, _BaseMap); 99 | 100 | // already normalized from normal transform to WS. 101 | output.normalWS = normalInput.normalWS; 102 | output.viewDirWS = viewDirWS; 103 | #ifdef _NORMALMAP 104 | real sign = input.tangentOS.w * GetOddNegativeScale(); 105 | output.tangentWS = half4(normalInput.tangentWS.xyz, sign); 106 | #endif 107 | 108 | OUTPUT_LIGHTMAP_UV(input.lightmapUV, unity_LightmapST, output.lightmapUV); 109 | OUTPUT_SH(output.normalWS.xyz, output.vertexSH); 110 | 111 | output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); 112 | 113 | #if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR) 114 | output.positionWS = vertexInput.positionWS; 115 | #endif 116 | 117 | #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) 118 | output.shadowCoord = GetShadowCoord(vertexInput); 119 | #endif 120 | 121 | output.positionCS = vertexInput.positionCS; 122 | 123 | return output; 124 | } 125 | 126 | // Used in Standard (Physically Based) shader 127 | half4 LitPassFragment(Varyings input) : SV_Target 128 | { 129 | UNITY_SETUP_INSTANCE_ID(input); 130 | UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); 131 | 132 | SurfaceData surfaceData; 133 | InitializeKnitwearLitSurfaceData(input.uv, surfaceData); 134 | 135 | InputData inputData; 136 | InitializeInputData(input, surfaceData.normalTS, inputData); 137 | 138 | half4 color = UniversalFragmentPBR(inputData, surfaceData.albedo, surfaceData.metallic, surfaceData.specular, surfaceData.smoothness, surfaceData.occlusion, surfaceData.emission, surfaceData.alpha); 139 | 140 | color.rgb = MixFog(color.rgb, inputData.fogCoord); 141 | color.a = OutputAlpha(color.a); 142 | 143 | return color; 144 | } 145 | 146 | #endif -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLitForwardPass.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 070d9873593161145aef75c196fa199e 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLitInput.hlsl: -------------------------------------------------------------------------------- 1 | #ifndef UNIVERSAL_KNITWEAR_LIT_INPUT_INCLUDED 2 | #define UNIVERSAL_KNITWEAR_LIT_INPUT_INCLUDED 3 | 4 | #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" 5 | #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl" 6 | #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" 7 | 8 | #include "KnitwearCommon.hlsl" 9 | 10 | CBUFFER_START(UnityPerMaterial) 11 | float4 _BaseMap_ST; 12 | half4 _BaseColor; 13 | half4 _SpecColor; 14 | half4 _EmissionColor; 15 | half _Cutoff; 16 | half _Smoothness; 17 | half _Metallic; 18 | half _BumpScale; 19 | half _OcclusionStrength; 20 | half _KnitwearDivision; 21 | half _KnitwearAspect; 22 | half _KnitwearShear; 23 | half _KnitwearDistortionStrength; 24 | CBUFFER_END 25 | 26 | TEXTURE2D(_KnitwearMap); SAMPLER(sampler_KnitwearMap); 27 | TEXTURE2D(_OcclusionMap); SAMPLER(sampler_OcclusionMap); 28 | TEXTURE2D(_MetallicGlossMap); SAMPLER(sampler_MetallicGlossMap); 29 | TEXTURE2D(_SpecGlossMap); SAMPLER(sampler_SpecGlossMap); 30 | 31 | half4 SampleAlbedoAlphaGrad(float2 uv, TEXTURE2D_PARAM(albedoAlphaMap, sampler_albedoAlphaMap), float2 dpdx, float2 dpdy) 32 | { 33 | return SAMPLE_TEXTURE2D_GRAD(albedoAlphaMap, sampler_albedoAlphaMap, uv, dpdx, dpdy); 34 | } 35 | 36 | half3 SampleNormalGrad(float2 uv, TEXTURE2D_PARAM(bumpMap, sampler_bumpMap), float2 dpdx, float2 dpdy, half scale = 1.0h) 37 | { 38 | #ifdef _NORMALMAP 39 | half4 n = SAMPLE_TEXTURE2D_GRAD(bumpMap, sampler_bumpMap, uv, dpdx, dpdy); 40 | #if BUMP_SCALE_NOT_SUPPORTED 41 | return UnpackNormal(n); 42 | #else 43 | return UnpackNormalScale(n, scale); 44 | #endif 45 | #else 46 | return half3(0.0h, 0.0h, 1.0h); 47 | #endif 48 | } 49 | 50 | half3 SampleEmissionGrad(float2 uv, half3 emissionColor, TEXTURE2D_PARAM(emissionMap, sampler_emissionMap), float2 dpdx, float2 dpdy) 51 | { 52 | #ifndef _EMISSION 53 | return 0; 54 | #else 55 | return SAMPLE_TEXTURE2D_GRAD(emissionMap, sampler_emissionMap, uv, dpdx, dpdy).rgb * emissionColor; 56 | #endif 57 | } 58 | 59 | #ifdef _SPECULAR_SETUP 60 | #define SAMPLE_METALLICSPECULAR_GRAD(uv, ddx, ddy) SAMPLE_TEXTURE2D_GRAD(_SpecGlossMap, sampler_SpecGlossMap, uv, ddx, ddy) 61 | #else 62 | #define SAMPLE_METALLICSPECULAR_GRAD(uv, ddx, ddy) SAMPLE_TEXTURE2D_GRAD(_MetallicGlossMap, sampler_MetallicGlossMap, uv, ddx, ddy) 63 | #endif 64 | 65 | half4 SampleMetallicSpecGlossGrad(float2 uv, float2 dpdx, float2 dpdy, half albedoAlpha) 66 | { 67 | half4 specGloss; 68 | 69 | #ifdef _METALLICSPECGLOSSMAP 70 | specGloss = SAMPLE_METALLICSPECULAR_GRAD(uv, dpdx, dpdy); 71 | #ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 72 | specGloss.a = albedoAlpha * _Smoothness; 73 | #else 74 | specGloss.a *= _Smoothness; 75 | #endif 76 | #else // _METALLICSPECGLOSSMAP 77 | #if _SPECULAR_SETUP 78 | specGloss.rgb = _SpecColor.rgb; 79 | #else 80 | specGloss.rgb = _Metallic.rrr; 81 | #endif 82 | 83 | #ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 84 | specGloss.a = albedoAlpha * _Smoothness; 85 | #else 86 | specGloss.a = _Smoothness; 87 | #endif 88 | #endif 89 | 90 | return specGloss; 91 | } 92 | 93 | half SampleOcclusionGrad(float2 uv, float2 dpdx, float2 dpdy) 94 | { 95 | #ifdef _OCCLUSIONMAP 96 | // TODO: Controls things like these by exposing SHADER_QUALITY levels (low, medium, high) 97 | #if defined(SHADER_API_GLES) 98 | return SAMPLE_TEXTURE2D_GRAD(_OcclusionMap, sampler_OcclusionMap, uv, dpdx, dpdy).g; 99 | #else 100 | half occ = SAMPLE_TEXTURE2D_GRAD(_OcclusionMap, sampler_OcclusionMap, uv, dpdx, dpdy).g; 101 | return LerpWhiteTo(occ, _OcclusionStrength); 102 | #endif 103 | #else 104 | return 1.0; 105 | #endif 106 | } 107 | 108 | half3 SampleKnitwear(float2 uv, float2 dpdx, float2 dpdy) 109 | { 110 | return SAMPLE_TEXTURE2D_GRAD(_KnitwearMap, sampler_KnitwearMap, uv, dpdx, dpdy).rgb; 111 | } 112 | 113 | inline void InitializeKnitwearLitSurfaceData(float2 uv, out SurfaceData outSurfaceData) 114 | { 115 | 116 | ZERO_INITIALIZE(SurfaceData, outSurfaceData); 117 | float2 texCoord = uv; 118 | 119 | float2 dtdx = ddx(uv); 120 | float2 dtdy = ddy(uv); 121 | 122 | half2 scale = _KnitwearDivision / half2(_KnitwearAspect, 1.0); 123 | uv *= scale; 124 | 125 | float2 duvdx = dtdx * scale; 126 | float2 duvdy = dtdy * scale; 127 | 128 | KnitwearCoordinate(uv, texCoord, _KnitwearDivision, _KnitwearShear, _KnitwearDistortionStrength); 129 | texCoord /= scale; 130 | 131 | half4 albedoAlpha = SampleAlbedoAlphaGrad(texCoord, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap), dtdx, dtdy); 132 | outSurfaceData.alpha = Alpha(albedoAlpha.a, _BaseColor, _Cutoff); 133 | 134 | half3 knitwearColor = SampleKnitwear(uv, duvdx, duvdy); 135 | outSurfaceData.albedo = albedoAlpha.rgb * _BaseColor.rgb * knitwearColor; 136 | 137 | half4 specGloss = SampleMetallicSpecGlossGrad(uv, duvdx, duvdy, albedoAlpha.a); 138 | 139 | #if _SPECULAR_SETUP 140 | outSurfaceData.metallic = 1.0h; 141 | outSurfaceData.specular = specGloss.rgb; 142 | #else 143 | outSurfaceData.metallic = specGloss.r; 144 | outSurfaceData.specular = half3(0.0h, 0.0h, 0.0h); 145 | #endif 146 | 147 | outSurfaceData.smoothness = specGloss.a; 148 | outSurfaceData.normalTS = SampleNormalGrad(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap), duvdx, duvdy, _BumpScale); 149 | outSurfaceData.occlusion = SampleOcclusionGrad(uv, duvdx, duvdy); 150 | outSurfaceData.emission = SampleEmissionGrad(uv, _EmissionColor.rgb, TEXTURE2D_ARGS(_EmissionMap, sampler_EmissionMap), duvdx, duvdy); 151 | } 152 | 153 | #endif // UNIVERSAL_INPUT_SURFACE_PBR_INCLUDED -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearLitInput.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6c0ebe5d4bae1c4cb2c4b34cf05c41e 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearUnlit.shader: -------------------------------------------------------------------------------- 1 | Shader "Universal Render Pipeline/Knitwear/Unlit" 2 | { 3 | Properties 4 | { 5 | [MainTexture] _BaseMap("Base Map", 2D) = "white" {} 6 | [MainColor] _BaseColor("Color", Color) = (1, 1, 1, 1) 7 | _Cutoff("AlphaCutout", Range(0.0, 1.0)) = 0.5 8 | 9 | [NoScaleOffset] _KnitwearMap("Knitwear Map", 2D) = "white" {} 10 | _KnitwearDivision("Division", Range(1, 200)) = 100.0 11 | _KnitwearAspect("Aspect", Range(0.2, 5)) = 1.0 12 | _KnitwearShear("Shear", Range(-2.0, 2.0)) = 1.0 13 | [Toggle(_KNITWEAR_DISTORTION_ON)] _KnitwearDistortion("Distortion", Float) = 1.0 14 | _KnitwearDistortionStrength("Strength", Range(0.0, 1.0)) = 0.5 15 | 16 | // BlendMode 17 | [HideInInspector] _Surface("__surface", Float) = 0.0 18 | [HideInInspector] _Blend("__blend", Float) = 0.0 19 | [HideInInspector] _AlphaClip("__clip", Float) = 0.0 20 | [HideInInspector] _SrcBlend("Src", Float) = 1.0 21 | [HideInInspector] _DstBlend("Dst", Float) = 0.0 22 | [HideInInspector] _ZWrite("ZWrite", Float) = 1.0 23 | [HideInInspector] _Cull("__cull", Float) = 2.0 24 | 25 | // Editmode props 26 | [HideInInspector] _QueueOffset("Queue offset", Float) = 0.0 27 | 28 | // ObsoleteProperties 29 | [HideInInspector] _MainTex("BaseMap", 2D) = "white" {} 30 | [HideInInspector] _Color("Base Color", Color) = (0.5, 0.5, 0.5, 1) 31 | [HideInInspector] _SampleGI("SampleGI", float) = 0.0 // needed from bakedlit 32 | } 33 | SubShader 34 | { 35 | Tags { "RenderType" = "Opaque" "IgnoreProjector" = "True" "RenderPipeline" = "UniversalPipeline" } 36 | LOD 100 37 | 38 | Blend [_SrcBlend][_DstBlend] 39 | ZWrite [_ZWrite] 40 | Cull [_Cull] 41 | 42 | Pass 43 | { 44 | Name "Unlit" 45 | HLSLPROGRAM 46 | // Required to compile gles 2.0 with standard srp library 47 | #pragma prefer_hlslcc gles 48 | #pragma exclude_renderers d3d11_9x 49 | 50 | #pragma vertex vert 51 | #pragma fragment frag 52 | #pragma shader_feature _ALPHATEST_ON 53 | #pragma shader_feature _ALPHAPREMULTIPLY_ON 54 | 55 | #pragma shader_feature _KNITWEAR_DISTORTION_ON 56 | 57 | // ------------------------------------- 58 | // Unity defined keywords 59 | #pragma multi_compile_fog 60 | #pragma multi_compile_instancing 61 | 62 | #include "KnitwearCommon.hlsl" 63 | #include "KnitwearUnlitInput.hlsl" 64 | 65 | struct Attributes 66 | { 67 | float4 positionOS : POSITION; 68 | float2 uv : TEXCOORD0; 69 | UNITY_VERTEX_INPUT_INSTANCE_ID 70 | }; 71 | 72 | struct Varyings 73 | { 74 | float2 uv : TEXCOORD0; 75 | float fogCoord : TEXCOORD1; 76 | float4 vertex : SV_POSITION; 77 | 78 | UNITY_VERTEX_INPUT_INSTANCE_ID 79 | UNITY_VERTEX_OUTPUT_STEREO 80 | }; 81 | 82 | Varyings vert(Attributes input) 83 | { 84 | Varyings output = (Varyings)0; 85 | 86 | UNITY_SETUP_INSTANCE_ID(input); 87 | UNITY_TRANSFER_INSTANCE_ID(input, output); 88 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); 89 | 90 | VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); 91 | output.vertex = vertexInput.positionCS; 92 | output.uv = TRANSFORM_TEX(input.uv, _BaseMap); 93 | output.fogCoord = ComputeFogFactor(vertexInput.positionCS.z); 94 | 95 | return output; 96 | } 97 | 98 | half4 frag(Varyings input) : SV_Target 99 | { 100 | UNITY_SETUP_INSTANCE_ID(input); 101 | UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); 102 | 103 | half2 uv = input.uv; 104 | half2 texCoord = uv; 105 | 106 | half2 scale = _KnitwearDivision / half2(_KnitwearAspect, 1.0); 107 | uv *= scale; 108 | 109 | half2 dtdx = ddx(texCoord); 110 | half2 dtdy = ddy(texCoord); 111 | 112 | half2 duvdx = dtdx * scale; 113 | half2 duvdy = dtdy * scale; 114 | 115 | KnitwearCoordinate(uv, texCoord, _KnitwearDivision, _KnitwearShear, _KnitwearDistortionStrength); 116 | texCoord /= scale; 117 | 118 | half4 texColor = SAMPLE_TEXTURE2D_GRAD(_BaseMap, sampler_BaseMap, texCoord, dtdx, dtdy); 119 | half3 knitwearColor = SAMPLE_TEXTURE2D_GRAD(_KnitwearMap, sampler_KnitwearMap, uv, duvdx, duvdy).rgb; 120 | 121 | half3 color = texColor.rgb * knitwearColor * _BaseColor.rgb; 122 | half alpha = texColor.a * _BaseColor.a; 123 | AlphaDiscard(alpha, _Cutoff); 124 | 125 | #ifdef _ALPHAPREMULTIPLY_ON 126 | color *= alpha; 127 | #endif 128 | 129 | color = MixFog(color, input.fogCoord); 130 | alpha = OutputAlpha(alpha); 131 | 132 | return half4(color, alpha); 133 | } 134 | ENDHLSL 135 | } 136 | Pass 137 | { 138 | Tags{"LightMode" = "DepthOnly"} 139 | 140 | ZWrite On 141 | ColorMask 0 142 | 143 | HLSLPROGRAM 144 | // Required to compile gles 2.0 with standard srp library 145 | #pragma prefer_hlslcc gles 146 | #pragma exclude_renderers d3d11_9x 147 | #pragma target 2.0 148 | 149 | #pragma vertex DepthOnlyVertex 150 | #pragma fragment DepthOnlyFragment 151 | 152 | // ------------------------------------- 153 | // Material Keywords 154 | #pragma shader_feature _ALPHATEST_ON 155 | 156 | //-------------------------------------- 157 | // GPU Instancing 158 | #pragma multi_compile_instancing 159 | 160 | #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl" 161 | #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" 162 | ENDHLSL 163 | } 164 | 165 | // This pass it not used during regular rendering, only for lightmap baking. 166 | Pass 167 | { 168 | Name "Meta" 169 | Tags{"LightMode" = "Meta"} 170 | 171 | Cull Off 172 | 173 | HLSLPROGRAM 174 | // Required to compile gles 2.0 with standard srp library 175 | #pragma prefer_hlslcc gles 176 | #pragma exclude_renderers d3d11_9x 177 | #pragma vertex UniversalVertexMeta 178 | #pragma fragment UniversalFragmentMetaUnlit 179 | 180 | #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl" 181 | #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitMetaPass.hlsl" 182 | 183 | ENDHLSL 184 | } 185 | } 186 | FallBack "Hidden/Universal Render Pipeline/FallbackError" 187 | CustomEditor "UnityEditor.Rendering.Universal.ShaderGUI.KnitwearUnlitShader" 188 | } -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearUnlit.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16ace3f4f86bfd5449f384a4c8caee61 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearUnlitInput.hlsl: -------------------------------------------------------------------------------- 1 | #ifndef UNIVERSAL_KNITWEAR_UNLIT_INPUT_INCLUDED 2 | #define UNIVERSAL_KNITWEAR_UNLIT_INPUT_INCLUDED 3 | 4 | #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" 5 | 6 | CBUFFER_START(UnityPerMaterial) 7 | float4 _BaseMap_ST; 8 | half4 _BaseColor; 9 | half _Cutoff; 10 | half _KnitwearDivision; 11 | half _KnitwearAspect; 12 | half _KnitwearShear; 13 | half _KnitwearDistortionStrength; 14 | CBUFFER_END 15 | 16 | TEXTURE2D(_KnitwearMap); SAMPLER(sampler_KnitwearMap); 17 | 18 | #endif -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Shaders/KnitwearUnlitInput.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80720655b437e8d4a8dd2bce734d36c3 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 505b8cc12485c3b4992c164644d6e1c7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Diffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Knitwear Shader/Textures/Knitwear_Diffuse.png -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Diffuse.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24818d08dee2be54db9f34f806939ab1 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Knitwear Shader/Textures/Knitwear_Normal.png -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Normal.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c55076344fbbf4409aea7000725e457 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 0 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 1 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Occulsion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Knitwear Shader/Textures/Knitwear_Occulsion.png -------------------------------------------------------------------------------- /Assets/Knitwear Shader/Textures/Knitwear_Occulsion.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34ea3734da6b97f43adbc41f3e28002a 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Presets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 558255460b74ec04fa70b5570e9327bd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/AudioCompressedInMemory.preset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!181963792 &2655988077585873504 4 | Preset: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: AudioCompressedInMemory 9 | m_TargetType: 10 | m_NativeTypeID: 1020 11 | m_ManagedTypePPtr: {fileID: 0} 12 | m_ManagedTypeFallback: 13 | m_Properties: 14 | - target: {fileID: 0} 15 | propertyPath: m_ExternalObjects.Array.size 16 | value: 0 17 | objectReference: {fileID: 0} 18 | - target: {fileID: 0} 19 | propertyPath: m_DefaultSettings.loadType 20 | value: 1 21 | objectReference: {fileID: 0} 22 | - target: {fileID: 0} 23 | propertyPath: m_DefaultSettings.sampleRateSetting 24 | value: 0 25 | objectReference: {fileID: 0} 26 | - target: {fileID: 0} 27 | propertyPath: m_DefaultSettings.sampleRateOverride 28 | value: 44100 29 | objectReference: {fileID: 0} 30 | - target: {fileID: 0} 31 | propertyPath: m_DefaultSettings.compressionFormat 32 | value: 2 33 | objectReference: {fileID: 0} 34 | - target: {fileID: 0} 35 | propertyPath: m_DefaultSettings.quality 36 | value: 0.7 37 | objectReference: {fileID: 0} 38 | - target: {fileID: 0} 39 | propertyPath: m_DefaultSettings.conversionMode 40 | value: 0 41 | objectReference: {fileID: 0} 42 | - target: {fileID: 0} 43 | propertyPath: m_PlatformSettingOverrides.Array.size 44 | value: 2 45 | objectReference: {fileID: 0} 46 | - target: {fileID: 0} 47 | propertyPath: m_PlatformSettingOverrides.Array.data[0].first 48 | value: 4 49 | objectReference: {fileID: 0} 50 | - target: {fileID: 0} 51 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.loadType 52 | value: 1 53 | objectReference: {fileID: 0} 54 | - target: {fileID: 0} 55 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateSetting 56 | value: 0 57 | objectReference: {fileID: 0} 58 | - target: {fileID: 0} 59 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateOverride 60 | value: 44100 61 | objectReference: {fileID: 0} 62 | - target: {fileID: 0} 63 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.compressionFormat 64 | value: 3 65 | objectReference: {fileID: 0} 66 | - target: {fileID: 0} 67 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.quality 68 | value: 0.7 69 | objectReference: {fileID: 0} 70 | - target: {fileID: 0} 71 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.conversionMode 72 | value: 0 73 | objectReference: {fileID: 0} 74 | - target: {fileID: 0} 75 | propertyPath: m_PlatformSettingOverrides.Array.data[1].first 76 | value: 7 77 | objectReference: {fileID: 0} 78 | - target: {fileID: 0} 79 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.loadType 80 | value: 1 81 | objectReference: {fileID: 0} 82 | - target: {fileID: 0} 83 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateSetting 84 | value: 0 85 | objectReference: {fileID: 0} 86 | - target: {fileID: 0} 87 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateOverride 88 | value: 44100 89 | objectReference: {fileID: 0} 90 | - target: {fileID: 0} 91 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.compressionFormat 92 | value: 1 93 | objectReference: {fileID: 0} 94 | - target: {fileID: 0} 95 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.quality 96 | value: 0.7 97 | objectReference: {fileID: 0} 98 | - target: {fileID: 0} 99 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.conversionMode 100 | value: 0 101 | objectReference: {fileID: 0} 102 | - target: {fileID: 0} 103 | propertyPath: m_ForceToMono 104 | value: 0 105 | objectReference: {fileID: 0} 106 | - target: {fileID: 0} 107 | propertyPath: m_Normalize 108 | value: 1 109 | objectReference: {fileID: 0} 110 | - target: {fileID: 0} 111 | propertyPath: m_PreloadAudioData 112 | value: 1 113 | objectReference: {fileID: 0} 114 | - target: {fileID: 0} 115 | propertyPath: m_LoadInBackground 116 | value: 0 117 | objectReference: {fileID: 0} 118 | - target: {fileID: 0} 119 | propertyPath: m_Ambisonic 120 | value: 0 121 | objectReference: {fileID: 0} 122 | - target: {fileID: 0} 123 | propertyPath: m_3D 124 | value: 1 125 | objectReference: {fileID: 0} 126 | - target: {fileID: 0} 127 | propertyPath: m_UserData 128 | value: 129 | objectReference: {fileID: 0} 130 | - target: {fileID: 0} 131 | propertyPath: m_AssetBundleName 132 | value: 133 | objectReference: {fileID: 0} 134 | - target: {fileID: 0} 135 | propertyPath: m_AssetBundleVariant 136 | value: 137 | objectReference: {fileID: 0} 138 | -------------------------------------------------------------------------------- /Assets/Presets/AudioCompressedInMemory.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2dd802e4d37c65149922028d3e973832 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/AudioStreaming.preset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!181963792 &2655988077585873504 4 | Preset: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: AudioStreaming 9 | m_TargetType: 10 | m_NativeTypeID: 1020 11 | m_ManagedTypePPtr: {fileID: 0} 12 | m_ManagedTypeFallback: 13 | m_Properties: 14 | - target: {fileID: 0} 15 | propertyPath: m_ExternalObjects.Array.size 16 | value: 0 17 | objectReference: {fileID: 0} 18 | - target: {fileID: 0} 19 | propertyPath: m_DefaultSettings.loadType 20 | value: 2 21 | objectReference: {fileID: 0} 22 | - target: {fileID: 0} 23 | propertyPath: m_DefaultSettings.sampleRateSetting 24 | value: 0 25 | objectReference: {fileID: 0} 26 | - target: {fileID: 0} 27 | propertyPath: m_DefaultSettings.sampleRateOverride 28 | value: 44100 29 | objectReference: {fileID: 0} 30 | - target: {fileID: 0} 31 | propertyPath: m_DefaultSettings.compressionFormat 32 | value: 1 33 | objectReference: {fileID: 0} 34 | - target: {fileID: 0} 35 | propertyPath: m_DefaultSettings.quality 36 | value: 0.7 37 | objectReference: {fileID: 0} 38 | - target: {fileID: 0} 39 | propertyPath: m_DefaultSettings.conversionMode 40 | value: 0 41 | objectReference: {fileID: 0} 42 | - target: {fileID: 0} 43 | propertyPath: m_PlatformSettingOverrides.Array.size 44 | value: 2 45 | objectReference: {fileID: 0} 46 | - target: {fileID: 0} 47 | propertyPath: m_PlatformSettingOverrides.Array.data[0].first 48 | value: 4 49 | objectReference: {fileID: 0} 50 | - target: {fileID: 0} 51 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.loadType 52 | value: 2 53 | objectReference: {fileID: 0} 54 | - target: {fileID: 0} 55 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateSetting 56 | value: 0 57 | objectReference: {fileID: 0} 58 | - target: {fileID: 0} 59 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateOverride 60 | value: 44100 61 | objectReference: {fileID: 0} 62 | - target: {fileID: 0} 63 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.compressionFormat 64 | value: 3 65 | objectReference: {fileID: 0} 66 | - target: {fileID: 0} 67 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.quality 68 | value: 0.7 69 | objectReference: {fileID: 0} 70 | - target: {fileID: 0} 71 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.conversionMode 72 | value: 0 73 | objectReference: {fileID: 0} 74 | - target: {fileID: 0} 75 | propertyPath: m_PlatformSettingOverrides.Array.data[1].first 76 | value: 7 77 | objectReference: {fileID: 0} 78 | - target: {fileID: 0} 79 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.loadType 80 | value: 2 81 | objectReference: {fileID: 0} 82 | - target: {fileID: 0} 83 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateSetting 84 | value: 0 85 | objectReference: {fileID: 0} 86 | - target: {fileID: 0} 87 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateOverride 88 | value: 44100 89 | objectReference: {fileID: 0} 90 | - target: {fileID: 0} 91 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.compressionFormat 92 | value: 1 93 | objectReference: {fileID: 0} 94 | - target: {fileID: 0} 95 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.quality 96 | value: 0.7 97 | objectReference: {fileID: 0} 98 | - target: {fileID: 0} 99 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.conversionMode 100 | value: 0 101 | objectReference: {fileID: 0} 102 | - target: {fileID: 0} 103 | propertyPath: m_ForceToMono 104 | value: 0 105 | objectReference: {fileID: 0} 106 | - target: {fileID: 0} 107 | propertyPath: m_Normalize 108 | value: 1 109 | objectReference: {fileID: 0} 110 | - target: {fileID: 0} 111 | propertyPath: m_PreloadAudioData 112 | value: 1 113 | objectReference: {fileID: 0} 114 | - target: {fileID: 0} 115 | propertyPath: m_LoadInBackground 116 | value: 0 117 | objectReference: {fileID: 0} 118 | - target: {fileID: 0} 119 | propertyPath: m_Ambisonic 120 | value: 0 121 | objectReference: {fileID: 0} 122 | - target: {fileID: 0} 123 | propertyPath: m_3D 124 | value: 1 125 | objectReference: {fileID: 0} 126 | - target: {fileID: 0} 127 | propertyPath: m_UserData 128 | value: 129 | objectReference: {fileID: 0} 130 | - target: {fileID: 0} 131 | propertyPath: m_AssetBundleName 132 | value: 133 | objectReference: {fileID: 0} 134 | - target: {fileID: 0} 135 | propertyPath: m_AssetBundleVariant 136 | value: 137 | objectReference: {fileID: 0} 138 | -------------------------------------------------------------------------------- /Assets/Presets/AudioStreaming.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86bcce7f5575b54408aa0f3a7d321039 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2655988077585873504 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71ea82b02df99c2439e0dc8e4e1ebc24 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults/AlbedoTexture_Default.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e8537455c6c08bd4e8bf0be3707da685 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2655988077585873504 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults/AudioDecompressOnLoad.preset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!181963792 &2655988077585873504 4 | Preset: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: AudioDecompressOnLoad 9 | m_TargetType: 10 | m_NativeTypeID: 1020 11 | m_ManagedTypePPtr: {fileID: 0} 12 | m_ManagedTypeFallback: 13 | m_Properties: 14 | - target: {fileID: 0} 15 | propertyPath: m_ExternalObjects.Array.size 16 | value: 0 17 | objectReference: {fileID: 0} 18 | - target: {fileID: 0} 19 | propertyPath: m_DefaultSettings.loadType 20 | value: 0 21 | objectReference: {fileID: 0} 22 | - target: {fileID: 0} 23 | propertyPath: m_DefaultSettings.sampleRateSetting 24 | value: 0 25 | objectReference: {fileID: 0} 26 | - target: {fileID: 0} 27 | propertyPath: m_DefaultSettings.sampleRateOverride 28 | value: 44100 29 | objectReference: {fileID: 0} 30 | - target: {fileID: 0} 31 | propertyPath: m_DefaultSettings.compressionFormat 32 | value: 0 33 | objectReference: {fileID: 0} 34 | - target: {fileID: 0} 35 | propertyPath: m_DefaultSettings.quality 36 | value: 1 37 | objectReference: {fileID: 0} 38 | - target: {fileID: 0} 39 | propertyPath: m_DefaultSettings.conversionMode 40 | value: 0 41 | objectReference: {fileID: 0} 42 | - target: {fileID: 0} 43 | propertyPath: m_PlatformSettingOverrides.Array.size 44 | value: 2 45 | objectReference: {fileID: 0} 46 | - target: {fileID: 0} 47 | propertyPath: m_PlatformSettingOverrides.Array.data[0].first 48 | value: 4 49 | objectReference: {fileID: 0} 50 | - target: {fileID: 0} 51 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.loadType 52 | value: 0 53 | objectReference: {fileID: 0} 54 | - target: {fileID: 0} 55 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateSetting 56 | value: 0 57 | objectReference: {fileID: 0} 58 | - target: {fileID: 0} 59 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateOverride 60 | value: 44100 61 | objectReference: {fileID: 0} 62 | - target: {fileID: 0} 63 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.compressionFormat 64 | value: 3 65 | objectReference: {fileID: 0} 66 | - target: {fileID: 0} 67 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.quality 68 | value: 1 69 | objectReference: {fileID: 0} 70 | - target: {fileID: 0} 71 | propertyPath: m_PlatformSettingOverrides.Array.data[0].second.conversionMode 72 | value: 0 73 | objectReference: {fileID: 0} 74 | - target: {fileID: 0} 75 | propertyPath: m_PlatformSettingOverrides.Array.data[1].first 76 | value: 7 77 | objectReference: {fileID: 0} 78 | - target: {fileID: 0} 79 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.loadType 80 | value: 0 81 | objectReference: {fileID: 0} 82 | - target: {fileID: 0} 83 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateSetting 84 | value: 0 85 | objectReference: {fileID: 0} 86 | - target: {fileID: 0} 87 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateOverride 88 | value: 44100 89 | objectReference: {fileID: 0} 90 | - target: {fileID: 0} 91 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.compressionFormat 92 | value: 1 93 | objectReference: {fileID: 0} 94 | - target: {fileID: 0} 95 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.quality 96 | value: 1 97 | objectReference: {fileID: 0} 98 | - target: {fileID: 0} 99 | propertyPath: m_PlatformSettingOverrides.Array.data[1].second.conversionMode 100 | value: 0 101 | objectReference: {fileID: 0} 102 | - target: {fileID: 0} 103 | propertyPath: m_ForceToMono 104 | value: 0 105 | objectReference: {fileID: 0} 106 | - target: {fileID: 0} 107 | propertyPath: m_Normalize 108 | value: 1 109 | objectReference: {fileID: 0} 110 | - target: {fileID: 0} 111 | propertyPath: m_PreloadAudioData 112 | value: 1 113 | objectReference: {fileID: 0} 114 | - target: {fileID: 0} 115 | propertyPath: m_LoadInBackground 116 | value: 0 117 | objectReference: {fileID: 0} 118 | - target: {fileID: 0} 119 | propertyPath: m_Ambisonic 120 | value: 0 121 | objectReference: {fileID: 0} 122 | - target: {fileID: 0} 123 | propertyPath: m_3D 124 | value: 1 125 | objectReference: {fileID: 0} 126 | - target: {fileID: 0} 127 | propertyPath: m_UserData 128 | value: 129 | objectReference: {fileID: 0} 130 | - target: {fileID: 0} 131 | propertyPath: m_AssetBundleName 132 | value: 133 | objectReference: {fileID: 0} 134 | - target: {fileID: 0} 135 | propertyPath: m_AssetBundleVariant 136 | value: 137 | objectReference: {fileID: 0} 138 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults/AudioDecompressOnLoad.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7689051185d12f4298e1ebb2693a29f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults/DirectionalLight_Default.preset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!181963792 &2655988077585873504 4 | Preset: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: DirectionalLight_Default 9 | m_TargetType: 10 | m_NativeTypeID: 108 11 | m_ManagedTypePPtr: {fileID: 0} 12 | m_ManagedTypeFallback: 13 | m_Properties: 14 | - target: {fileID: 0} 15 | propertyPath: m_Enabled 16 | value: 1 17 | objectReference: {fileID: 0} 18 | - target: {fileID: 0} 19 | propertyPath: m_Type 20 | value: 1 21 | objectReference: {fileID: 0} 22 | - target: {fileID: 0} 23 | propertyPath: m_Color.r 24 | value: 1 25 | objectReference: {fileID: 0} 26 | - target: {fileID: 0} 27 | propertyPath: m_Color.g 28 | value: 0.95686275 29 | objectReference: {fileID: 0} 30 | - target: {fileID: 0} 31 | propertyPath: m_Color.b 32 | value: 0.8392157 33 | objectReference: {fileID: 0} 34 | - target: {fileID: 0} 35 | propertyPath: m_Color.a 36 | value: 1 37 | objectReference: {fileID: 0} 38 | - target: {fileID: 0} 39 | propertyPath: m_Intensity 40 | value: 2 41 | objectReference: {fileID: 0} 42 | - target: {fileID: 0} 43 | propertyPath: m_Range 44 | value: 10 45 | objectReference: {fileID: 0} 46 | - target: {fileID: 0} 47 | propertyPath: m_SpotAngle 48 | value: 30 49 | objectReference: {fileID: 0} 50 | - target: {fileID: 0} 51 | propertyPath: m_CookieSize 52 | value: 10 53 | objectReference: {fileID: 0} 54 | - target: {fileID: 0} 55 | propertyPath: m_Shadows.m_Type 56 | value: 2 57 | objectReference: {fileID: 0} 58 | - target: {fileID: 0} 59 | propertyPath: m_Shadows.m_Resolution 60 | value: -1 61 | objectReference: {fileID: 0} 62 | - target: {fileID: 0} 63 | propertyPath: m_Shadows.m_CustomResolution 64 | value: -1 65 | objectReference: {fileID: 0} 66 | - target: {fileID: 0} 67 | propertyPath: m_Shadows.m_Strength 68 | value: 1 69 | objectReference: {fileID: 0} 70 | - target: {fileID: 0} 71 | propertyPath: m_Shadows.m_Bias 72 | value: 0.02 73 | objectReference: {fileID: 0} 74 | - target: {fileID: 0} 75 | propertyPath: m_Shadows.m_NormalBias 76 | value: 0.1 77 | objectReference: {fileID: 0} 78 | - target: {fileID: 0} 79 | propertyPath: m_Shadows.m_NearPlane 80 | value: 0.1 81 | objectReference: {fileID: 0} 82 | - target: {fileID: 0} 83 | propertyPath: m_Cookie 84 | value: 85 | objectReference: {fileID: 0} 86 | - target: {fileID: 0} 87 | propertyPath: m_DrawHalo 88 | value: 0 89 | objectReference: {fileID: 0} 90 | - target: {fileID: 0} 91 | propertyPath: m_Flare 92 | value: 93 | objectReference: {fileID: 0} 94 | - target: {fileID: 0} 95 | propertyPath: m_RenderMode 96 | value: 0 97 | objectReference: {fileID: 0} 98 | - target: {fileID: 0} 99 | propertyPath: m_CullingMask.m_Bits 100 | value: 4294967295 101 | objectReference: {fileID: 0} 102 | - target: {fileID: 0} 103 | propertyPath: m_Lightmapping 104 | value: 4 105 | objectReference: {fileID: 0} 106 | - target: {fileID: 0} 107 | propertyPath: m_LightShadowCasterMode 108 | value: 0 109 | objectReference: {fileID: 0} 110 | - target: {fileID: 0} 111 | propertyPath: m_AreaSize.x 112 | value: 1 113 | objectReference: {fileID: 0} 114 | - target: {fileID: 0} 115 | propertyPath: m_AreaSize.y 116 | value: 1 117 | objectReference: {fileID: 0} 118 | - target: {fileID: 0} 119 | propertyPath: m_BounceIntensity 120 | value: 1 121 | objectReference: {fileID: 0} 122 | - target: {fileID: 0} 123 | propertyPath: m_ColorTemperature 124 | value: 6570 125 | objectReference: {fileID: 0} 126 | - target: {fileID: 0} 127 | propertyPath: m_UseColorTemperature 128 | value: 0 129 | objectReference: {fileID: 0} 130 | - target: {fileID: 0} 131 | propertyPath: m_ShadowRadius 132 | value: 0 133 | objectReference: {fileID: 0} 134 | - target: {fileID: 0} 135 | propertyPath: m_ShadowAngle 136 | value: 0 137 | objectReference: {fileID: 0} 138 | -------------------------------------------------------------------------------- /Assets/Presets/Defaults/DirectionalLight_Default.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 463065d4f17d1d94d848aa127b94dd43 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2655988077585873504 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/NormalTexture.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14a57cf3b9fa1c74b884aa7e0dcf1faa 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2655988077585873504 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Presets/UtilityTexture.preset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45f7b2e3c78185248b3adbb14429c2ab 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2655988077585873504 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54272958c0157ca45b0b6e3a167ad268 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/HDRI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97f8b100b30c62642af30c8f5471cf1b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/HDRI/Ballroom.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Ballroom 11 | m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BaseMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _BumpMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _EmissionMap: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _MainTex: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _MetallicGlossMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _OcclusionMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _SpecGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _Tex: 51 | m_Texture: {fileID: 8900000, guid: 772a7971d3eabe641a9964dd24e5431e, type: 3} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | m_Floats: 55 | - _AlphaClip: 0 56 | - _Blend: 0 57 | - _BumpScale: 1 58 | - _Cull: 2 59 | - _Cutoff: 0.5 60 | - _DstBlend: 0 61 | - _EnvironmentReflections: 1 62 | - _Exposure: 1.11 63 | - _GlossMapScale: 0 64 | - _Glossiness: 0 65 | - _GlossyReflections: 0 66 | - _Metallic: 0 67 | - _OcclusionStrength: 1 68 | - _QueueOffset: 0 69 | - _ReceiveShadows: 1 70 | - _Rotation: 139 71 | - _Smoothness: 0.5 72 | - _SmoothnessTextureChannel: 0 73 | - _SpecularHighlights: 1 74 | - _SrcBlend: 1 75 | - _Surface: 0 76 | - _WorkflowMode: 1 77 | - _ZWrite: 1 78 | m_Colors: 79 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 80 | - _Color: {r: 1, g: 1, b: 1, a: 1} 81 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 82 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 83 | - _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} 84 | --- !u!114 &7199383474273627528 85 | MonoBehaviour: 86 | m_ObjectHideFlags: 11 87 | m_CorrespondingSourceObject: {fileID: 0} 88 | m_PrefabInstance: {fileID: 0} 89 | m_PrefabAsset: {fileID: 0} 90 | m_GameObject: {fileID: 0} 91 | m_Enabled: 1 92 | m_EditorHideFlags: 0 93 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 94 | m_Name: 95 | m_EditorClassIdentifier: 96 | version: 2 97 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/HDRI/Ballroom.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8865b6d2cc8b8e043987c15a5145d46e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/HDRI/ballroom_4k.hdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/HDRI/ballroom_4k.hdr -------------------------------------------------------------------------------- /Assets/Sample Scenes/HDRI/ballroom_4k.hdr.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 772a7971d3eabe641a9964dd24e5431e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 2 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58346290eea21454f8bf3758e910bf01 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/De sterrennacht.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Masterpieces/De sterrennacht.jpg -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/De sterrennacht.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ecfc9e26e389e646a62ea88b29275bf 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/De sterrennacht_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: De sterrennacht_mat 24 | m_Shader: {fileID: 4800000, guid: 5f0b4eff2a81ea847b49f092a0356d2a, type: 3} 25 | m_ShaderKeywords: _KNITWEAR_DISTORTION_ON _NORMALMAP _OCCLUSIONMAP 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 0ecfc9e26e389e646a62ea88b29275bf, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 2800000, guid: 1c55076344fbbf4409aea7000725e457, type: 3} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _KnitwearMap: 49 | m_Texture: {fileID: 2800000, guid: 24818d08dee2be54db9f34f806939ab1, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: 0ecfc9e26e389e646a62ea88b29275bf, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 2800000, guid: 34ea3734da6b97f43adbc41f3e28002a, type: 3} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | m_Floats: 69 | - _AlphaClip: 0 70 | - _Blend: 0 71 | - _BumpScale: 1 72 | - _Cull: 2 73 | - _Cutoff: 0.5 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 0 77 | - _Glossiness: 0 78 | - _GlossyReflections: 0 79 | - _KnitwearAspect: 0.84 80 | - _KnitwearDistortion: 1 81 | - _KnitwearDistortionStrength: 0.529 82 | - _KnitwearDivision: 68 83 | - _KnitwearShear: 1.33 84 | - _Metallic: 0 85 | - _OcclusionStrength: 0.538 86 | - _QueueOffset: 0 87 | - _ReceiveShadows: 1 88 | - _Smoothness: 0.253 89 | - _SmoothnessTextureChannel: 0 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Surface: 0 93 | - _WorkflowMode: 1 94 | - _ZWrite: 1 95 | m_Colors: 96 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/De sterrennacht_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20b3f748607e35749bab14c2e0ca4e85 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Het meisje met de parel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Masterpieces/Het meisje met de parel.jpg -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Het meisje met de parel.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b017220ddd103740ac23a3cc7c35a8e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Het meisje met de parel_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Het meisje met de parel_mat 24 | m_Shader: {fileID: 4800000, guid: 5f0b4eff2a81ea847b49f092a0356d2a, type: 3} 25 | m_ShaderKeywords: _KNITWEAR_DISTORTION_ON _NORMALMAP _OCCLUSIONMAP 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 5b017220ddd103740ac23a3cc7c35a8e, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 2800000, guid: 1c55076344fbbf4409aea7000725e457, type: 3} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _KnitwearMap: 49 | m_Texture: {fileID: 2800000, guid: 24818d08dee2be54db9f34f806939ab1, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: 5b017220ddd103740ac23a3cc7c35a8e, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 2800000, guid: 34ea3734da6b97f43adbc41f3e28002a, type: 3} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | m_Floats: 69 | - _AlphaClip: 0 70 | - _Blend: 0 71 | - _BumpScale: 1 72 | - _Cull: 2 73 | - _Cutoff: 0.5 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 0 77 | - _Glossiness: 0 78 | - _GlossyReflections: 0 79 | - _KnitwearAspect: 0.84 80 | - _KnitwearDistortion: 1 81 | - _KnitwearDistortionStrength: 0.529 82 | - _KnitwearDivision: 68 83 | - _KnitwearShear: 1.33 84 | - _Metallic: 0 85 | - _OcclusionStrength: 0.538 86 | - _QueueOffset: 0 87 | - _ReceiveShadows: 1 88 | - _Smoothness: 0.253 89 | - _SmoothnessTextureChannel: 0 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Surface: 0 93 | - _WorkflowMode: 1 94 | - _ZWrite: 1 95 | m_Colors: 96 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Het meisje met de parel_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dda845dcf8c9afb49a931472714b6f8f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/La Gioconda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Masterpieces/La Gioconda.jpg -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/La Gioconda.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ffb9bf8c6269676498e5e295b6d0f00a 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/La Gioconda_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: La Gioconda_mat 24 | m_Shader: {fileID: 4800000, guid: 5f0b4eff2a81ea847b49f092a0356d2a, type: 3} 25 | m_ShaderKeywords: _KNITWEAR_DISTORTION_ON _NORMALMAP _OCCLUSIONMAP 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: ffb9bf8c6269676498e5e295b6d0f00a, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 2800000, guid: 1c55076344fbbf4409aea7000725e457, type: 3} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _KnitwearMap: 49 | m_Texture: {fileID: 2800000, guid: 24818d08dee2be54db9f34f806939ab1, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: ffb9bf8c6269676498e5e295b6d0f00a, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 2800000, guid: 34ea3734da6b97f43adbc41f3e28002a, type: 3} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | m_Floats: 69 | - _AlphaClip: 0 70 | - _Blend: 0 71 | - _BumpScale: 1 72 | - _Cull: 2 73 | - _Cutoff: 0.5 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 0 77 | - _Glossiness: 0 78 | - _GlossyReflections: 0 79 | - _KnitwearAspect: 0.84 80 | - _KnitwearDistortion: 1 81 | - _KnitwearDistortionStrength: 0.529 82 | - _KnitwearDivision: 68 83 | - _KnitwearShear: 1.33 84 | - _Metallic: 0 85 | - _OcclusionStrength: 0.538 86 | - _QueueOffset: 0 87 | - _ReceiveShadows: 1 88 | - _Smoothness: 0.253 89 | - _SmoothnessTextureChannel: 0 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Surface: 0 93 | - _WorkflowMode: 1 94 | - _ZWrite: 1 95 | m_Colors: 96 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/La Gioconda_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a99972721de6a6e46bc4805d69866a69 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Zonnebloemen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Masterpieces/Zonnebloemen.jpg -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Zonnebloemen.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ae4c19c40824e0439f12757468a5476 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Zonnebloemen_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Zonnebloemen_mat 24 | m_Shader: {fileID: 4800000, guid: 5f0b4eff2a81ea847b49f092a0356d2a, type: 3} 25 | m_ShaderKeywords: _KNITWEAR_DISTORTION_ON _NORMALMAP _OCCLUSIONMAP 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 0ae4c19c40824e0439f12757468a5476, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 2800000, guid: 1c55076344fbbf4409aea7000725e457, type: 3} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _KnitwearMap: 49 | m_Texture: {fileID: 2800000, guid: 24818d08dee2be54db9f34f806939ab1, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: 0ae4c19c40824e0439f12757468a5476, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 2800000, guid: 34ea3734da6b97f43adbc41f3e28002a, type: 3} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | m_Floats: 69 | - _AlphaClip: 0 70 | - _Blend: 0 71 | - _BumpScale: 1 72 | - _Cull: 2 73 | - _Cutoff: 0.5 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 0 77 | - _Glossiness: 0 78 | - _GlossyReflections: 0 79 | - _KnitwearAspect: 0.84 80 | - _KnitwearDistortion: 1 81 | - _KnitwearDistortionStrength: 0.529 82 | - _KnitwearDivision: 68 83 | - _KnitwearShear: 1.33 84 | - _Metallic: 0 85 | - _OcclusionStrength: 0.538 86 | - _QueueOffset: 0 87 | - _ReceiveShadows: 1 88 | - _Smoothness: 0.253 89 | - _SmoothnessTextureChannel: 0 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Surface: 0 93 | - _WorkflowMode: 1 94 | - _ZWrite: 1 95 | m_Colors: 96 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/Zonnebloemen_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af954a556d41b2049a6ce6d673bb459c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/美大ボール.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Masterpieces/美大ボール.jpg -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/美大ボール.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e9b7bd7d7c06a6418e2725ba724ebe7 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: 2 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 8192 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/美大ボール_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: "\u7F8E\u5927\u30DC\u30FC\u30EB_mat" 24 | m_Shader: {fileID: 4800000, guid: 5f0b4eff2a81ea847b49f092a0356d2a, type: 3} 25 | m_ShaderKeywords: _KNITWEAR_DISTORTION_ON _NORMALMAP _OCCLUSIONMAP 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 1e9b7bd7d7c06a6418e2725ba724ebe7, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 2800000, guid: 1c55076344fbbf4409aea7000725e457, type: 3} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _KnitwearMap: 49 | m_Texture: {fileID: 2800000, guid: 24818d08dee2be54db9f34f806939ab1, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: 1e9b7bd7d7c06a6418e2725ba724ebe7, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 2800000, guid: 34ea3734da6b97f43adbc41f3e28002a, type: 3} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | m_Floats: 69 | - _AlphaClip: 0 70 | - _Blend: 0 71 | - _BumpScale: 1 72 | - _Cull: 2 73 | - _Cutoff: 0.5 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 0 77 | - _Glossiness: 0 78 | - _GlossyReflections: 0 79 | - _KnitwearAspect: 0.84 80 | - _KnitwearDistortion: 1 81 | - _KnitwearDistortionStrength: 0.529 82 | - _KnitwearDivision: 68 83 | - _KnitwearShear: 1.33 84 | - _Metallic: 0 85 | - _OcclusionStrength: 0.538 86 | - _QueueOffset: 0 87 | - _ReceiveShadows: 1 88 | - _Smoothness: 0.253 89 | - _SmoothnessTextureChannel: 0 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Surface: 0 93 | - _WorkflowMode: 1 94 | - _ZWrite: 1 95 | m_Colors: 96 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Masterpieces/美大ボール_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d14bfb6762268c4aa10989aad60fd2f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71f0da327ef6a3940b755bab76727543 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Pillow/pillow.fbx -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a364619be19128e44b77204450daaa48 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: bottom 11 | second: {fileID: 2100000, guid: 7fb51c58679a67c478a65e6f32667173, type: 2} 12 | - first: 13 | type: UnityEngine:Material 14 | assembly: UnityEngine.CoreModule 15 | name: top 16 | second: {fileID: 2100000, guid: 7fb51c58679a67c478a65e6f32667173, type: 2} 17 | materials: 18 | materialImportMode: 1 19 | materialName: 0 20 | materialSearch: 1 21 | materialLocation: 1 22 | animations: 23 | legacyGenerateAnimations: 4 24 | bakeSimulation: 0 25 | resampleCurves: 1 26 | optimizeGameObjects: 0 27 | motionNodeName: 28 | rigImportErrors: 29 | rigImportWarnings: 30 | animationImportErrors: 31 | animationImportWarnings: 32 | animationRetargetingWarnings: 33 | animationDoRetargetingWarnings: 0 34 | importAnimatedCustomProperties: 0 35 | importConstraints: 0 36 | animationCompression: 1 37 | animationRotationError: 0.5 38 | animationPositionError: 0.5 39 | animationScaleError: 0.5 40 | animationWrapMode: 0 41 | extraExposedTransformPaths: [] 42 | extraUserProperties: [] 43 | clipAnimations: [] 44 | isReadable: 0 45 | meshes: 46 | lODScreenPercentages: [] 47 | globalScale: 1 48 | meshCompression: 0 49 | addColliders: 0 50 | useSRGBMaterialColor: 1 51 | sortHierarchyByName: 1 52 | importVisibility: 0 53 | importBlendShapes: 1 54 | importCameras: 0 55 | importLights: 0 56 | swapUVChannels: 0 57 | generateSecondaryUV: 0 58 | useFileUnits: 1 59 | keepQuads: 0 60 | weldVertices: 1 61 | preserveHierarchy: 0 62 | skinWeightsMode: 0 63 | maxBonesPerVertex: 4 64 | minBoneWeight: 0.001 65 | meshOptimizationFlags: -1 66 | indexFormat: 0 67 | secondaryUVAngleDistortion: 8 68 | secondaryUVAreaDistortion: 15.000001 69 | secondaryUVHardAngle: 88 70 | secondaryUVPackMargin: 4 71 | useFileScale: 1 72 | tangentSpace: 73 | normalSmoothAngle: 60 74 | normalImportMode: 0 75 | tangentImportMode: 3 76 | normalCalculationMode: 4 77 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 78 | blendShapeNormalImportMode: 1 79 | normalSmoothingSource: 0 80 | referencedClips: [] 81 | importAnimation: 0 82 | humanDescription: 83 | serializedVersion: 3 84 | human: [] 85 | skeleton: [] 86 | armTwist: 0.5 87 | foreArmTwist: 0.5 88 | upperLegTwist: 0.5 89 | legTwist: 0.5 90 | armStretch: 0.05 91 | legStretch: 0.05 92 | feetSpacing: 0 93 | globalScale: 1 94 | rootMotionBoneName: 95 | hasTranslationDoF: 0 96 | hasExtraRoot: 1 97 | skeletonHasParents: 1 98 | lastHumanDescriptionAvatarSource: {instanceID: 0} 99 | autoGenerateAvatarMappingIfUnspecified: 1 100 | animationType: 0 101 | humanoidOversampling: 1 102 | avatarSetup: 0 103 | additionalBone: 0 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_brown_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: pillow_brown_mat 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0.577 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 0.4, g: 0.29803923, b: 0.18431373, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_brown_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: efd2b73b02525d94aac9171a798b6853 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_gray_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: pillow_gray_mat 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0.577 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 0.7169812, g: 0.68020976, b: 0.6391955, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_gray_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fb51c58679a67c478a65e6f32667173 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: pillow_mat 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0.577 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 0.4, g: 0.29803923, b: 0.18431373, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fb51c58679a67c478a65e6f32667173 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_yellow_mat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8279251417738518554 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 2 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: pillow_yellow_mat 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2000 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0.577 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 0.6509434, g: 0.57952976, b: 0.33468318, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Pillow/pillow_yellow_mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1981023c04331440830707a55abf8e1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab656efcbc2ead64e90a4ca9e19240c5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d1c3109bdb54ad54c8a2b2838528e640 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/LightingData.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Sample Scene/LightingData.asset -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/LightingData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c1599e3ff6700d48adf1d78bd65c59a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/Post-process Volume Profile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: Post-process Volume Profile 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 1473683398799347172} 17 | - {fileID: 1350459604974958537} 18 | --- !u!114 &1350459604974958537 19 | MonoBehaviour: 20 | m_ObjectHideFlags: 3 21 | m_CorrespondingSourceObject: {fileID: 0} 22 | m_PrefabInstance: {fileID: 0} 23 | m_PrefabAsset: {fileID: 0} 24 | m_GameObject: {fileID: 0} 25 | m_Enabled: 1 26 | m_EditorHideFlags: 0 27 | m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3} 28 | m_Name: DepthOfField 29 | m_EditorClassIdentifier: 30 | active: 1 31 | m_AdvancedMode: 0 32 | mode: 33 | m_OverrideState: 1 34 | m_Value: 2 35 | gaussianStart: 36 | m_OverrideState: 0 37 | m_Value: 10 38 | min: 0 39 | gaussianEnd: 40 | m_OverrideState: 0 41 | m_Value: 30 42 | min: 0 43 | gaussianMaxRadius: 44 | m_OverrideState: 0 45 | m_Value: 1 46 | min: 0.5 47 | max: 1.5 48 | highQualitySampling: 49 | m_OverrideState: 0 50 | m_Value: 0 51 | focusDistance: 52 | m_OverrideState: 1 53 | m_Value: 1.4 54 | min: 0.1 55 | aperture: 56 | m_OverrideState: 1 57 | m_Value: 1.7 58 | min: 1 59 | max: 32 60 | focalLength: 61 | m_OverrideState: 1 62 | m_Value: 48 63 | min: 1 64 | max: 300 65 | bladeCount: 66 | m_OverrideState: 0 67 | m_Value: 5 68 | min: 3 69 | max: 9 70 | bladeCurvature: 71 | m_OverrideState: 0 72 | m_Value: 1 73 | min: 0 74 | max: 1 75 | bladeRotation: 76 | m_OverrideState: 0 77 | m_Value: 0 78 | min: -180 79 | max: 180 80 | --- !u!114 &1473683398799347172 81 | MonoBehaviour: 82 | m_ObjectHideFlags: 3 83 | m_CorrespondingSourceObject: {fileID: 0} 84 | m_PrefabInstance: {fileID: 0} 85 | m_PrefabAsset: {fileID: 0} 86 | m_GameObject: {fileID: 0} 87 | m_Enabled: 1 88 | m_EditorHideFlags: 0 89 | m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} 90 | m_Name: Tonemapping 91 | m_EditorClassIdentifier: 92 | active: 1 93 | m_AdvancedMode: 0 94 | mode: 95 | m_OverrideState: 1 96 | m_Value: 2 97 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/Post-process Volume Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c47a514bae76e541bd51fb8d2794c7d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/ReflectionProbe-0.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Assets/Sample Scenes/Sample Scene/ReflectionProbe-0.exr -------------------------------------------------------------------------------- /Assets/Sample Scenes/Sample Scene/ReflectionProbe-0.exr.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3807530feb24d3f4a861047b57148b8e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 1 29 | seamlessCubemap: 1 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 2 35 | aniso: 0 36 | mipBias: 0 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 2 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 3 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 100 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | forceMaximumCompressionQuality_BC6H_BC7: 0 73 | - serializedVersion: 3 74 | buildTarget: Standalone 75 | maxTextureSize: 8192 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | forceMaximumCompressionQuality_BC6H_BC7: 0 85 | - serializedVersion: 3 86 | buildTarget: iPhone 87 | maxTextureSize: 8192 88 | resizeAlgorithm: 0 89 | textureFormat: -1 90 | textureCompression: 1 91 | compressionQuality: 50 92 | crunchedCompression: 0 93 | allowsAlphaSplitting: 0 94 | overridden: 0 95 | androidETC2FallbackOverride: 0 96 | forceMaximumCompressionQuality_BC6H_BC7: 0 97 | - serializedVersion: 3 98 | buildTarget: Android 99 | maxTextureSize: 8192 100 | resizeAlgorithm: 0 101 | textureFormat: -1 102 | textureCompression: 1 103 | compressionQuality: 50 104 | crunchedCompression: 0 105 | allowsAlphaSplitting: 0 106 | overridden: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Windows Store Apps 111 | maxTextureSize: 8192 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | androidETC2FallbackOverride: 0 120 | forceMaximumCompressionQuality_BC6H_BC7: 0 121 | spriteSheet: 122 | serializedVersion: 2 123 | sprites: [] 124 | outline: [] 125 | physicsShape: [] 126 | bones: [] 127 | spriteID: 128 | internalID: 0 129 | vertices: [] 130 | indices: 131 | edges: [] 132 | weights: [] 133 | secondaryTextures: [] 134 | spritePackingTag: 135 | pSDRemoveMatte: 0 136 | pSDShowRemoveMatteOption: 0 137 | userData: 138 | assetBundleName: 139 | assetBundleVariant: 140 | -------------------------------------------------------------------------------- /Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0735c275001a2c84dafdb30deced5d8d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/UniversalRenderPipelineAsset.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: UniversalRenderPipelineAsset 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 5 16 | k_AssetPreviousVersion: 5 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: 3fb186cb2ae7d9a44b931c5491f577f8, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 1 27 | m_MSAA: 8 28 | m_RenderScale: 2 29 | m_MainLightRenderingMode: 1 30 | m_MainLightShadowsSupported: 1 31 | m_MainLightShadowmapResolution: 2048 32 | m_AdditionalLightsRenderingMode: 1 33 | m_AdditionalLightsPerObjectLimit: 4 34 | m_AdditionalLightShadowsSupported: 0 35 | m_AdditionalLightsShadowmapResolution: 512 36 | m_ShadowDistance: 50 37 | m_ShadowCascades: 1 38 | m_Cascade2Split: 0.25 39 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 40 | m_ShadowDepthBias: 1 41 | m_ShadowNormalBias: 1 42 | m_SoftShadowsSupported: 1 43 | m_UseSRPBatcher: 1 44 | m_SupportsDynamicBatching: 0 45 | m_MixedLightingSupported: 1 46 | m_DebugLevel: 0 47 | m_PostProcessingFeatureSet: 0 48 | m_ColorGradingMode: 1 49 | m_ColorGradingLutSize: 32 50 | m_ShadowType: 1 51 | m_LocalShadowsSupported: 0 52 | m_LocalShadowsAtlasResolution: 256 53 | m_MaxPixelLights: 0 54 | m_ShadowAtlasResolution: 256 55 | m_ShaderVariantLogLevel: 0 56 | -------------------------------------------------------------------------------- /Assets/Settings/UniversalRenderPipelineAsset.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1903708d6ed789f4cbfe2f3368b7814e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/UniversalRenderPipelineAsset_Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: UniversalRenderPipelineAsset_Renderer 14 | m_EditorClassIdentifier: 15 | m_RendererFeatures: [] 16 | m_RendererFeatureMap: 17 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 18 | shaders: 19 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 20 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 21 | screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, 22 | type: 3} 23 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 24 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 25 | m_OpaqueLayerMask: 26 | serializedVersion: 2 27 | m_Bits: 4294967295 28 | m_TransparentLayerMask: 29 | serializedVersion: 2 30 | m_Bits: 4294967295 31 | m_DefaultStencilState: 32 | overrideStencilState: 0 33 | stencilReference: 0 34 | stencilCompareFunction: 8 35 | passOperation: 0 36 | failOperation: 0 37 | zFailOperation: 0 38 | m_ShadowTransparentReceive: 1 39 | -------------------------------------------------------------------------------- /Assets/Settings/UniversalRenderPipelineAsset_Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3fb186cb2ae7d9a44b931c5491f577f8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Images/screenshot-udk-sphere.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Images/screenshot-udk-sphere.gif -------------------------------------------------------------------------------- /Images/screenshots-pillows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Images/screenshots-pillows.png -------------------------------------------------------------------------------- /Images/screenshots-sunflowers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CJT-Jackton/URP-Knitwear-Shader-Example/efa6f0d91be64ca0decb1500e1855dcab19b1bbc/Images/screenshots-sunflowers.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.rider": "1.1.4", 4 | "com.unity.ide.vscode": "1.1.4", 5 | "com.unity.render-pipelines.universal": "7.4.1", 6 | "com.unity.textmeshpro": "2.0.1", 7 | "com.unity.modules.ai": "1.0.0", 8 | "com.unity.modules.androidjni": "1.0.0", 9 | "com.unity.modules.animation": "1.0.0", 10 | "com.unity.modules.assetbundle": "1.0.0", 11 | "com.unity.modules.audio": "1.0.0", 12 | "com.unity.modules.cloth": "1.0.0", 13 | "com.unity.modules.director": "1.0.0", 14 | "com.unity.modules.imageconversion": "1.0.0", 15 | "com.unity.modules.imgui": "1.0.0", 16 | "com.unity.modules.jsonserialize": "1.0.0", 17 | "com.unity.modules.particlesystem": "1.0.0", 18 | "com.unity.modules.physics": "1.0.0", 19 | "com.unity.modules.physics2d": "1.0.0", 20 | "com.unity.modules.screencapture": "1.0.0", 21 | "com.unity.modules.terrain": "1.0.0", 22 | "com.unity.modules.terrainphysics": "1.0.0", 23 | "com.unity.modules.tilemap": "1.0.0", 24 | "com.unity.modules.ui": "1.0.0", 25 | "com.unity.modules.uielements": "1.0.0", 26 | "com.unity.modules.umbra": "1.0.0", 27 | "com.unity.modules.unityanalytics": "1.0.0", 28 | "com.unity.modules.unitywebrequest": "1.0.0", 29 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 30 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 31 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 32 | "com.unity.modules.unitywebrequestwww": "1.0.0", 33 | "com.unity.modules.vehicles": "1.0.0", 34 | "com.unity.modules.video": "1.0.0", 35 | "com.unity.modules.vr": "1.0.0", 36 | "com.unity.modules.wind": "1.0.0", 37 | "com.unity.modules.xr": "1.0.0" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 0 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0.1 18 | m_ClothInterCollisionStiffness: 0.2 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 26 | m_ContactPairsMode: 0 27 | m_BroadphaseType: 0 28 | m_WorldBounds: 29 | m_Center: {x: 0, y: 0, z: 0} 30 | m_Extent: {x: 250, y: 250, z: 250} 31 | m_WorldSubdivisions: 8 32 | m_FrictionType: 0 33 | m_EnableEnhancedDeterminism: 0 34 | m_EnableUnifiedHeightmaps: 1 35 | m_SolverType: 0 36 | m_DefaultMaxAngularSpeed: 7 37 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Sample Scenes/Sample Scene.unity 10 | guid: d1c3109bdb54ad54c8a2b2838528e640 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 0 16 | m_EtcTextureFastCompressor: 2 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 5 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 41 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 42 | m_PreloadedShaders: [] 43 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 44 | type: 0} 45 | m_CustomRenderPipeline: {fileID: 11400000, guid: 1903708d6ed789f4cbfe2f3368b7814e, 46 | type: 2} 47 | m_TransparencySortMode: 0 48 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 49 | m_DefaultRenderingPath: 1 50 | m_DefaultMobileRenderingPath: 1 51 | m_TierSettings: [] 52 | m_LightmapStripping: 0 53 | m_FogStripping: 0 54 | m_InstancingStripping: 0 55 | m_LightmapKeepPlain: 1 56 | m_LightmapKeepDirCombined: 1 57 | m_LightmapKeepDynamicPlain: 1 58 | m_LightmapKeepDynamicDirCombined: 1 59 | m_LightmapKeepShadowMask: 1 60 | m_LightmapKeepSubtractive: 1 61 | m_FogKeepLinear: 1 62 | m_FogKeepExp: 1 63 | m_FogKeepExp2: 1 64 | m_AlbedoSwatchInfos: [] 65 | m_LightsUseLinearIntensity: 1 66 | m_LightsUseColorTemperature: 0 67 | m_LogWhenShaderIsCompiled: 0 68 | m_AllowEnlightenSupportForUpgradedProject: 1 69 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | - serializedVersion: 3 297 | m_Name: Enable Debug Button 1 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: left ctrl 302 | altNegativeButton: 303 | altPositiveButton: joystick button 8 304 | gravity: 0 305 | dead: 0 306 | sensitivity: 0 307 | snap: 0 308 | invert: 0 309 | type: 0 310 | axis: 0 311 | joyNum: 0 312 | - serializedVersion: 3 313 | m_Name: Enable Debug Button 2 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: backspace 318 | altNegativeButton: 319 | altPositiveButton: joystick button 9 320 | gravity: 0 321 | dead: 0 322 | sensitivity: 0 323 | snap: 0 324 | invert: 0 325 | type: 0 326 | axis: 0 327 | joyNum: 0 328 | - serializedVersion: 3 329 | m_Name: Debug Reset 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: left alt 334 | altNegativeButton: 335 | altPositiveButton: joystick button 1 336 | gravity: 0 337 | dead: 0 338 | sensitivity: 0 339 | snap: 0 340 | invert: 0 341 | type: 0 342 | axis: 0 343 | joyNum: 0 344 | - serializedVersion: 3 345 | m_Name: Debug Next 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: page down 350 | altNegativeButton: 351 | altPositiveButton: joystick button 5 352 | gravity: 0 353 | dead: 0 354 | sensitivity: 0 355 | snap: 0 356 | invert: 0 357 | type: 0 358 | axis: 0 359 | joyNum: 0 360 | - serializedVersion: 3 361 | m_Name: Debug Previous 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: page up 366 | altNegativeButton: 367 | altPositiveButton: joystick button 4 368 | gravity: 0 369 | dead: 0 370 | sensitivity: 0 371 | snap: 0 372 | invert: 0 373 | type: 0 374 | axis: 0 375 | joyNum: 0 376 | - serializedVersion: 3 377 | m_Name: Debug Validate 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: return 382 | altNegativeButton: 383 | altPositiveButton: joystick button 0 384 | gravity: 0 385 | dead: 0 386 | sensitivity: 0 387 | snap: 0 388 | invert: 0 389 | type: 0 390 | axis: 0 391 | joyNum: 0 392 | - serializedVersion: 3 393 | m_Name: Debug Persistent 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: right shift 398 | altNegativeButton: 399 | altPositiveButton: joystick button 2 400 | gravity: 0 401 | dead: 0 402 | sensitivity: 0 403 | snap: 0 404 | invert: 0 405 | type: 0 406 | axis: 0 407 | joyNum: 0 408 | - serializedVersion: 3 409 | m_Name: Debug Multiplier 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: left shift 414 | altNegativeButton: 415 | altPositiveButton: joystick button 3 416 | gravity: 0 417 | dead: 0 418 | sensitivity: 0 419 | snap: 0 420 | invert: 0 421 | type: 0 422 | axis: 0 423 | joyNum: 0 424 | - serializedVersion: 3 425 | m_Name: Debug Horizontal 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: left 429 | positiveButton: right 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 1000 433 | dead: 0.001 434 | sensitivity: 1000 435 | snap: 0 436 | invert: 0 437 | type: 0 438 | axis: 0 439 | joyNum: 0 440 | - serializedVersion: 3 441 | m_Name: Debug Vertical 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: down 445 | positiveButton: up 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 1000 449 | dead: 0.001 450 | sensitivity: 1000 451 | snap: 0 452 | invert: 0 453 | type: 0 454 | axis: 0 455 | joyNum: 0 456 | - serializedVersion: 3 457 | m_Name: Debug Vertical 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: down 461 | positiveButton: up 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 1000 465 | dead: 0.001 466 | sensitivity: 1000 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 6 471 | joyNum: 0 472 | - serializedVersion: 3 473 | m_Name: Debug Horizontal 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: left 477 | positiveButton: right 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 1000 481 | dead: 0.001 482 | sensitivity: 1000 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 5 487 | joyNum: 0 488 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: 463065d4f17d1d94d848aa127b94dd43, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: e7689051185d12f4298e1ebb2693a29f, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: e8537455c6c08bd4e8bf0be3707da685, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.3.5f1 2 | m_EditorVersionWithRevision: 2019.3.5f1 (4d09c45e9619) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 2 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 20 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 2 22 | textureQuality: 0 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.4 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 16 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | customRenderPipeline: {fileID: 11400000, guid: a31e9f9f9c9d4b9429ed0d1234e22103, 44 | type: 2} 45 | excludedTargetPlatforms: [] 46 | - serializedVersion: 2 47 | name: Medium 48 | pixelLightCount: 1 49 | shadows: 1 50 | shadowResolution: 0 51 | shadowProjection: 1 52 | shadowCascades: 1 53 | shadowDistance: 20 54 | shadowNearPlaneOffset: 3 55 | shadowCascade2Split: 0.33333334 56 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 57 | shadowmaskMode: 0 58 | skinWeights: 2 59 | textureQuality: 0 60 | anisotropicTextures: 1 61 | antiAliasing: 0 62 | softParticles: 0 63 | softVegetation: 0 64 | realtimeReflectionProbes: 0 65 | billboardsFaceCameraPosition: 0 66 | vSyncCount: 1 67 | lodBias: 0.7 68 | maximumLODLevel: 0 69 | streamingMipmapsActive: 0 70 | streamingMipmapsAddAllCameras: 1 71 | streamingMipmapsMemoryBudget: 512 72 | streamingMipmapsRenderersPerFrame: 512 73 | streamingMipmapsMaxLevelReduction: 2 74 | streamingMipmapsMaxFileIORequests: 1024 75 | particleRaycastBudget: 64 76 | asyncUploadTimeSlice: 2 77 | asyncUploadBufferSize: 16 78 | asyncUploadPersistentBuffer: 1 79 | resolutionScalingFixedDPIFactor: 1 80 | customRenderPipeline: {fileID: 11400000, guid: d847b876476d3d6468f5dfcd34266f96, 81 | type: 2} 82 | excludedTargetPlatforms: [] 83 | - serializedVersion: 2 84 | name: High 85 | pixelLightCount: 2 86 | shadows: 2 87 | shadowResolution: 1 88 | shadowProjection: 1 89 | shadowCascades: 2 90 | shadowDistance: 40 91 | shadowNearPlaneOffset: 3 92 | shadowCascade2Split: 0.33333334 93 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 94 | shadowmaskMode: 1 95 | skinWeights: 2 96 | textureQuality: 0 97 | anisotropicTextures: 1 98 | antiAliasing: 8 99 | softParticles: 0 100 | softVegetation: 1 101 | realtimeReflectionProbes: 1 102 | billboardsFaceCameraPosition: 1 103 | vSyncCount: 1 104 | lodBias: 1 105 | maximumLODLevel: 0 106 | streamingMipmapsActive: 0 107 | streamingMipmapsAddAllCameras: 1 108 | streamingMipmapsMemoryBudget: 512 109 | streamingMipmapsRenderersPerFrame: 512 110 | streamingMipmapsMaxLevelReduction: 2 111 | streamingMipmapsMaxFileIORequests: 1024 112 | particleRaycastBudget: 256 113 | asyncUploadTimeSlice: 2 114 | asyncUploadBufferSize: 16 115 | asyncUploadPersistentBuffer: 1 116 | resolutionScalingFixedDPIFactor: 1 117 | customRenderPipeline: {fileID: 11400000, guid: 1903708d6ed789f4cbfe2f3368b7814e, 118 | type: 2} 119 | excludedTargetPlatforms: [] 120 | m_PerPlatformDefaultQuality: 121 | Android: 1 122 | Lumin: 2 123 | Nintendo Switch: 2 124 | PS4: 2 125 | Stadia: 2 126 | Standalone: 2 127 | WebGL: 1 128 | Windows Store Apps: 2 129 | XboxOne: 2 130 | iPhone: 1 131 | tvOS: 1 132 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/URPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_LastMaterialVersion: 2 16 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity.cn 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # URP Knitwear Shader Example 2 | ![](/Images/screenshot-udk-sphere.gif) 3 | 4 | An example of knitwear shader extending the Lit shader in Unity URP. 5 | 6 | This shader is heavily inspired by [Simon Thommes's work](https://simon-thommes.com/knittr-procedural-knitwear-shader-blender). The knitwear textures in this project are generated from the original fully procedural material provided by Simon. 7 | 8 | ## Requirement 9 | - Unity 2019.3.2f1 or higher 10 | - Universal Rendering Pipeline 7.4.1 11 | 12 | ## Screenshots 13 | ![](/Images/screenshots-sunflowers.png) 14 | ![](/Images/screenshots-pillows.png) 15 | 16 | ## Resources 17 | - Texture - [The Starry Night](https://en.wikipedia.org/wiki/The_Starry_Night) by Vincent van Gogh 18 | - Texture - [Girl with a Pearl Earring](https://en.wikipedia.org/wiki/Girl_with_a_Pearl_Earring) by Johannes Vermeer 19 | - Texture - [Mona Lisa](https://en.wikipedia.org/wiki/Mona_Lisa) by Leonardo da Vinci 20 | - Texture - [Sunflowers](https://en.wikipedia.org/wiki/Sunflowers_(Van_Gogh_series)) by Vincent van Gogh 21 | - Texture - [美大ボール](https://seiga.nicovideo.jp/seiga/im3981422) by 宇月幸成 22 | - Model - [Test Pillow](https://sketchfab.com/3d-models/pillow-test-c16a30d9aaa54c209bafd9e2b5db0f6f) by sedar 23 | - Skybox - [Ballroom](https://hdrihaven.com/hdri/?h=ballroom) by Sergej Majboroda 24 | 25 | ## License 26 | #### Code 27 | CC0-1.0 28 | 29 | #### Texture by me 30 | CC0-1.0 31 | 32 | #### Model by sedar 33 | CC-BY 34 | 35 | #### All HDRIs from HDRIhaven.com 36 | CC0 37 | --------------------------------------------------------------------------------