From 831c41c711f2ab73d6557a19931c67e1a1ce650c Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 14 Jul 2026 08:47:31 -0700 Subject: [PATCH] =?UTF-8?q?Art:=20LANTERN=20A0=20material=20foundation=20?= =?UTF-8?q?=E2=80=94=20palette=20atlas=20+=203=20master=20materials?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The material-decision keystone (Art_Direction_Lantern / Lantern_Art_Pipeline_Recipes): one shared palette atlas + ~3 materials, zero per-asset texturing. - PaletteAtlas.png: 8x8 swatch grid encoding the ontology (warm-gold light / corpse-green + cold-blue gloam / lure-red bait / white-hot conversion / neutral / steel); sRGB, point, no-mip, clamp, uncompressed. - M_Lit_Palette (statics, Lit URP graph), M_Skinned_Palette (creatures/suits, the deformation-aware AnimatedLitShader with per-instance tint + vertex-colour), M_Emissive_Gloam (URP/Lit + HDR emission; hue/intensity = the gloam param axis). All wired to the atlas. Dedicated master-shader graphs (flicker param, Hybrid-Per-Instance on statics) + the style-proof scene are the next A0 steps. Verified by material values, not just a render. Co-Authored-By: Claude Opus 4.8 (1M context) --- Assets/_Project/Art/Materials.meta | 8 + .../Art/Materials/M_Emissive_Gloam.mat | 138 ++++++++++++++++++ .../Art/Materials/M_Emissive_Gloam.mat.meta | 8 + .../_Project/Art/Materials/M_Lit_Palette.mat | 67 +++++++++ .../Art/Materials/M_Lit_Palette.mat.meta | 8 + .../Art/Materials/M_Skinned_Palette.mat | 77 ++++++++++ .../Art/Materials/M_Skinned_Palette.mat.meta | 8 + Assets/_Project/Art/Palette.meta | 8 + Assets/_Project/Art/Palette/PaletteAtlas.png | 3 + .../Art/Palette/PaletteAtlas.png.meta | 117 +++++++++++++++ 10 files changed, 442 insertions(+) create mode 100644 Assets/_Project/Art/Materials.meta create mode 100644 Assets/_Project/Art/Materials/M_Emissive_Gloam.mat create mode 100644 Assets/_Project/Art/Materials/M_Emissive_Gloam.mat.meta create mode 100644 Assets/_Project/Art/Materials/M_Lit_Palette.mat create mode 100644 Assets/_Project/Art/Materials/M_Lit_Palette.mat.meta create mode 100644 Assets/_Project/Art/Materials/M_Skinned_Palette.mat create mode 100644 Assets/_Project/Art/Materials/M_Skinned_Palette.mat.meta create mode 100644 Assets/_Project/Art/Palette.meta create mode 100644 Assets/_Project/Art/Palette/PaletteAtlas.png create mode 100644 Assets/_Project/Art/Palette/PaletteAtlas.png.meta diff --git a/Assets/_Project/Art/Materials.meta b/Assets/_Project/Art/Materials.meta new file mode 100644 index 000000000..16dadf68b --- /dev/null +++ b/Assets/_Project/Art/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6477793a14f4f94448bcc54e1ad5c68b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat b/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat new file mode 100644 index 000000000..59a872be2 --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M_Emissive_Gloam + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 5dd4bd1a0b42b854cbf22574fd3a1d5b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 5dd4bd1a0b42b854cbf22574fd3a1d5b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0.1 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.3 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0.72599995, g: 2, b: 0.70000005, a: 2} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &5867403918425571876 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 diff --git a/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat.meta b/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat.meta new file mode 100644 index 000000000..a4c420b34 --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Emissive_Gloam.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d034b65e13940d64dad987093b0d3050 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Art/Materials/M_Lit_Palette.mat b/Assets/_Project/Art/Materials/M_Lit_Palette.mat new file mode 100644 index 000000000..2670eafc2 --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Lit_Palette.mat @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3236446949772214251 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M_Lit_Palette + m_Shader: {fileID: -6465566751694194690, guid: 9a04d2f9faf6a1e46b1f185bc64f118f, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 5dd4bd1a0b42b854cbf22574fd3a1d5b, type: 3} + m_Scale: {x: 0, y: 0} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _QueueControl: 0 + - _QueueOffset: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/_Project/Art/Materials/M_Lit_Palette.mat.meta b/Assets/_Project/Art/Materials/M_Lit_Palette.mat.meta new file mode 100644 index 000000000..292e7b010 --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Lit_Palette.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d5b0d8874a645024d8b89281923e866c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Art/Materials/M_Skinned_Palette.mat b/Assets/_Project/Art/Materials/M_Skinned_Palette.mat new file mode 100644 index 000000000..0dddfadef --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Skinned_Palette.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5606839496071720486 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M_Skinned_Palette + m_Shader: {fileID: -6465566751694194690, guid: 32ea7846f763cb340950fafed798ecf6, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _USE_VERTEX_COLOR + m_InvalidKeywords: [] + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: 5dd4bd1a0b42b854cbf22574fd3a1d5b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _DeformedMeshIndex: 0 + - _Metallic: 0.1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Smoothness: 0.2 + - _USE_VERTEX_COLOR: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _DeformationParamsForMotionVectors: {r: 0, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/_Project/Art/Materials/M_Skinned_Palette.mat.meta b/Assets/_Project/Art/Materials/M_Skinned_Palette.mat.meta new file mode 100644 index 000000000..0777048dc --- /dev/null +++ b/Assets/_Project/Art/Materials/M_Skinned_Palette.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ef4eaf188accb642b58a25abc8a724e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Art/Palette.meta b/Assets/_Project/Art/Palette.meta new file mode 100644 index 000000000..d2f57531b --- /dev/null +++ b/Assets/_Project/Art/Palette.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d52e6788cf1c83e4992470e4ac05bf3e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Art/Palette/PaletteAtlas.png b/Assets/_Project/Art/Palette/PaletteAtlas.png new file mode 100644 index 000000000..8a8f8959e --- /dev/null +++ b/Assets/_Project/Art/Palette/PaletteAtlas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9387c23d89c2b38df11e6bb589430049e8d0b8aa409f2ae8cccc2d31d7755e0a +size 2141 diff --git a/Assets/_Project/Art/Palette/PaletteAtlas.png.meta b/Assets/_Project/Art/Palette/PaletteAtlas.png.meta new file mode 100644 index 000000000..c627b4bbf --- /dev/null +++ b/Assets/_Project/Art/Palette/PaletteAtlas.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 5dd4bd1a0b42b854cbf22574fd3a1d5b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: