This commit is contained in:
Gerard Gascón 2025-02-02 23:44:44 +01:00
commit f5c1616018
679 changed files with 188502 additions and 0 deletions

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3ec8060d0c12248cb82fe8c7884f6875
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 27825f9614bb441669bbbac17539fd4d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,42 @@
%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: BigWater
m_Shader: {fileID: 4800000, guid: 5582b3353f4e043dbaa1c9b83860ee3e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _DepthFadeDist: 0.35
- _RefractionScale: 1.5
- _RefractionSpeed: 1
- _RefractionStrength: 1
- _ShadeBitDepth: 5.5
- _Transparency: 0.5
m_Colors:
- _Color: {r: 0, g: 1, b: 0.8998494, a: 1}
- _DeepColor: {r: 0, g: 0.44750255, b: 0.5943396, a: 0.7882353}
- _ShallowColor: {r: 0.6, g: 0.8, b: 1, a: 0.43137255}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0354e1c1d3c1c441a86a073c5cb80694
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,99 @@
%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: Cel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTex:
m_Texture: {fileID: 2800000, guid: bfb672edcbbd7408db341f8099e1865d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AttenuationThreshold: 0
- _BumpScale: 1
- _ColorBarycenter: 0.75
- _ColorShadeCenter: 1
- _Cutoff: 0.5
- _DarknessMidpoint: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _MaxDarkness: 0.452
- _MaxShadow: 0.5
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _ShadeBitDepth: 3.5
- _ShadowBitDepth: 8
- _ShadowThreshold: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _UseShadeTex: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.5019608, g: 0.5019608, b: 1, a: 1}
- _DarknessColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadowColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: baa90b9eae9f147979baf7fe81f40975
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: CyanCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 0, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ccc8b02f432e45ae8bc0ee6ee54f35f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,44 @@
%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: DebugWater
m_Shader: {fileID: 4800000, guid: 998209380528c40ff880075ec487feb1, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _DebugLevel: 7
- _DepthFadeDist: 0.35
- _RefractionDepthFix: 1
- _RefractionScale: 1
- _RefractionSpeed: 1
- _RefractionStrength: 1
- _ShadeBitDepth: 5.5
- _Transparency: 0.5
m_Colors:
- _Color: {r: 0, g: 1, b: 0.8998494, a: 1}
- _DeepColor: {r: 0, g: 0.44750255, b: 0.5943396, a: 0.7058824}
- _ShallowColor: {r: 0.6, g: 0.8, b: 1, a: 0.43137255}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 644e7c3b35cd14b619c6095c3fe823e0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,95 @@
%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: Grass
m_Shader: {fileID: 4800000, guid: 17870fdf34cac489dae43ec7df57b0ec, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ColorTex:
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: 7951dec560ad74d4489f43469a55c0ee, 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}
m_Ints: []
m_Floats:
- _AlphaCutout: 0.5
- _BumpScale: 1
- _ColorShift: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _TipColorShift: 0.1
- _UVSec: 0
- _WindSpeed: 0.35
- _WindStrength: 0.25
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _TipColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ddce44f4f36c4cf08fffc923d8c1955
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: GrayCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1ee6156cceaa34eb3b0be8f934fbc232
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
%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: Leaf
m_Shader: {fileID: 4800000, guid: 0126846fcaefd44e18554c24cb35c4d1, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ColorTex:
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: e47d60173ab264481b410d77ccb1261a, 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}
- _ShadeTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaCutout: 0.5
- _BumpScale: 1
- _ColorShift: 1
- _Cutoff: 0.5
- _DarknessMidpoint: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Extrude: 0.5
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 2
- _ShadeBitDepth: 5
- _ShadowThreshold: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _TipColorShift: 0.1
- _UVSec: 0
- _UseShadeTex: 0
- _WindSpeed: 0.35
- _WindStrength: 0.25
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.030784938, g: 0.5377358, b: 0, a: 1}
- _DarknessColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.9137255}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _TipColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 70dc8d614c40a41cd981e904b0a2317e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
%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: LeafCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ColorTex:
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: e47d60173ab264481b410d77ccb1261a, 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}
- _ShadeTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaCutout: 0.5
- _BumpScale: 1
- _ColorShift: 1
- _Cutoff: 0.5
- _DarknessMidpoint: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Extrude: 1
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 2
- _ShadeBitDepth: 5
- _ShadowThreshold: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _TipColorShift: 0.1
- _UVSec: 0
- _UseShadeTex: 0
- _WindSpeed: 0.35
- _WindStrength: 0.25
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.030784938, g: 0.5377358, b: 0, a: 1}
- _DarknessColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.9137255}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _TipColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 464535d2e7afd416cb6955e8271ca5b2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: LeavesCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 0.043691378, g: 0.46226418, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d87f0ea5f3e1f42d8906dd5be00b2118
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: SlateCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 0.49019608, g: 0.49411765, b: 0.65882355, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b46316203002a4927912189c9eb3e46e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,31 @@
%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: TerrainCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _ShadeBitDepth: 4
m_Colors:
- _Color: {r: 0.53333336, g: 1, b: 0.5803922, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 589c72f2a19af4eaab1f97daef0bdc33
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: TrunkCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 0.6698113, g: 0.3806483, b: 0.16745283, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eca7fce6fe717489ea30d3027fedb1fd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,43 @@
%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: Water
m_Shader: {fileID: 4800000, guid: 5582b3353f4e043dbaa1c9b83860ee3e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _DepthFadeDist: 0.35
- _RefractionDepthFix: 1
- _RefractionScale: 1
- _RefractionSpeed: 1
- _RefractionStrength: 1
- _ShadeBitDepth: 5.5
- _Transparency: 0.5
m_Colors:
- _Color: {r: 0, g: 1, b: 0.8998494, a: 1}
- _DeepColor: {r: 0, g: 0.44750255, b: 0.5943396, a: 0.7882353}
- _ShallowColor: {r: 0.6, g: 0.8, b: 1, a: 0.43137255}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 79c729ac739a545e2adb975049f6985b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,30 @@
%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: WhiteCel
m_Shader: {fileID: 4800000, guid: 6ad1e8d49c3a0400cbbe4426084594c1, type: 3}
m_Parent: {fileID: 2100000, guid: baa90b9eae9f147979baf7fe81f40975, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 14e89df72f0b64b229fdc098212faaae
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 62ab295510fe846cf82b65d2f71ca5e4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,32 @@
%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: GrayUnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 2100000, guid: 25dc53e0720fa4e6c931e589658a5b49, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _Glossiness: 0.37
- _Metallic: 0.244
m_Colors:
- _Color: {r: 0.8490566, g: 0.8490566, b: 0.8490566, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8d7a6fbc1d5a447b7920326cb694b7fb
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,31 @@
%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: LeafUnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 2100000, guid: 25dc53e0720fa4e6c931e589658a5b49, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _Glossiness: 0.254
m_Colors:
- _Color: {r: 0.029138267, g: 0.3962264, b: 0.005606967, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6b4f17c4792b045f1b5d208769b6e3f4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,32 @@
%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: TerrainUnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 2100000, guid: 25dc53e0720fa4e6c931e589658a5b49, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _Glossiness: 0.306
- _Metallic: 0.264
m_Colors:
- _Color: {r: 0.3754005, g: 0.7169812, b: 0.40984562, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3750536a2d6d54eda8d70e52fa7c9951
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,31 @@
%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: TrunkUnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 2100000, guid: 25dc53e0720fa4e6c931e589658a5b49, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _Glossiness: 0.261
m_Colors:
- _Color: {r: 0.5471698, g: 0.31290466, b: 0.14195444, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 194e8c41f005e45ea9bab07b522ded2d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,83 @@
%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: UnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 25dc53e0720fa4e6c931e589658a5b49
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,36 @@
%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: WaterUnCel
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 2100000, guid: 25dc53e0720fa4e6c931e589658a5b49, type: 2}
m_ModifiedSerializedProperties: 16
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _DstBlend: 0
- _Glossiness: 0.306
- _Metallic: 0.264
- _Mode: 0
- _SrcBlend: 1
- _ZWrite: 1
m_Colors:
- _Color: {r: 0, g: 0.4470588, b: 0.5960784, a: 0.7176471}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dda8ea07fb4884ad695781d5999c8900
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 34c090b36deb64b919ba6b6bc11eb7e3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 15600000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ae70e6a5b7f274c1081f3baba87d2849
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: 9d0adc86857194e6fb871d34d81b84cb
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: a33bb0084a6a74db2b6d66ee279a28d1
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: dca91b7e8f1ac43ccb11dae61ec0fed1
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: de40ce19a98354833a37e0b11cad0e10
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: c7827772d46604a14a1290f8b68007f8
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: ecfd4b66cc1bb49b8ab56fbe73109b56
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: f99d670a7aeea46b1bd53ec321f757d0
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,45 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 84e06638eaa634af89a35456e872d8a9, type: 3}
m_Name: Pixel 3D Pipeline Asset
m_EditorClassIdentifier:
cameraBuffer:
allowHDR: 1
copyColor: 0
copyColorReflection: 0
copyDepth: 0
copyDepthReflections: 0
renderScale: 1
pixelHeight: 180
filterMode: 0
useDynamicBatching: 1
useGPUInstancing: 1
useSRPBatcher: 1
useLightsPerObject: 1
shadows:
maxDistance: 100
distanceFade: 0.1
directional:
atlasSize: 1024
filter: 3
cascadeCount: 4
cascadeRatio1: 0.1
cascadeRatio2: 0.25
cascadeRatio3: 0.5
cascadeFade: 0.1
cascadeBlend: 1
other:
atlasSize: 1024
filter: 3
postFXSettings: {fileID: 11400000, guid: fb8606802f96c473fb9ff47becbd7b2f, type: 2}
colorLUTResolution: 64
cameraRendererShader: {fileID: 4800000, guid: ca83bab6df15c4a6097219f214f65387, type: 3}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e49086ea9dd44b8f9a11dc8e0c505fe
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 307b61f2b85974cd79d98f056b238f30, type: 3}
m_Name: Pixel 3D Post FX Settings
m_EditorClassIdentifier:
shader: {fileID: 4800000, guid: 7fff47b0bcd004f8d8e661d18af0b14c, type: 3}
bloom:
ignoreRenderScale: 1
maxIterations: 0
downscaleLimit: 1
bicubicUpsampling: 0
threshold: 0.5
thresholdKnee: 0.5
intensity: 0.5
fadeFireflies: 1
mode: 1
scatter: 0.7
colorAdjustments:
postExposure: 0
contrast: 0
colorFilter: {r: 1, g: 1, b: 1, a: 1}
hueShift: 0
saturation: 0
whiteBalance:
temperature: 0
tint: 0
splitToning:
shadows: {r: 0.5, g: 0.5, b: 0.5, a: 1}
highlights: {r: 0.5, g: 0.5, b: 0.5, a: 1}
balance: 0
channelMixer:
red: {x: 1, y: 0, z: 0}
green: {x: 0, y: 1, z: 0}
blue: {x: 0, y: 0, z: 1}
shadowsMidtonesHighlights:
shadows: {r: 1, g: 1, b: 1, a: 1}
midtones: {r: 1, g: 1, b: 1, a: 1}
highlights: {r: 1, g: 1, b: 1, a: 1}
shadowsStart: 0
shadowsEnd: 0.3
highlightsStart: 0.55
highLightsEnd: 1
toneMapping:
mode: 0

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fb8606802f96c473fb9ff47becbd7b2f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e6d263c7d9b3549b1857aa8495f3ddf3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,185 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1056269036718642083
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 745590008549767091}
- component: {fileID: 6713198489125426360}
- component: {fileID: 9180497027262206167}
- component: {fileID: 7406818813415170370}
m_Layer: 0
m_Name: MainCamera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &745590008549767091
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1056269036718642083}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 3, z: -25}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6499996012299327601}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &6713198489125426360
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1056269036718642083}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.3137255, g: 0.39215687, b: 0.49019608, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0
far clip plane: 50
field of view: 60
orthographic: 1
orthographic size: 8
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!81 &9180497027262206167
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1056269036718642083}
m_Enabled: 1
--- !u!114 &7406818813415170370
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1056269036718642083}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5ae31a9a3a3e946d1a6a904b9ab115c4, type: 3}
m_Name:
m_EditorClassIdentifier:
grassLayer:
serializedVersion: 2
m_Bits: 64
grassState: 0
grassReplacementShader: {fileID: 4800000, guid: cbc7dda786c2d4ea1b999d34d37bd0e5, type: 3}
grassBlendingShader: {fileID: 4800000, guid: ca5c8e1ac59ce49209ce9d675628d119, type: 3}
alphaThreshold: 0.5
pixelState: 0
dynamicPixelSize: 0
screenHeight: 192
pixelsPerUnit: 24
zoom: 0.125
outlineState: 0
outlineColor: {r: 0, g: 0, b: 0, a: 0.3764706}
edgeColor: {r: 1, g: 1, b: 1, a: 0.1254902}
depthThreshold: 0.02
normalThreshold: 0.05
normalEdgeBias: {x: 1, y: 1, z: 1}
angleThreshold: 0.5
angleFactorScale: 7
cloudState: 0
cloudShader: {fileID: 4800000, guid: 90c24f969a2a34bac8361bb427173be7, type: 3}
cloudsFineDetail: {fileID: 2800000, guid: 4f6a3a35a7848452dad7369e4e81aff9, type: 3}
cloudsMediumDetail: {fileID: 2800000, guid: b7e91822c4a3e494e8aa4ed65575ef25, type: 3}
cloudsLargeDetail: {fileID: 2800000, guid: cf63fd381eb894befb62f0c56f0c04a7, type: 3}
lightSource: {fileID: 0}
cloudSpeed: 1
cloudThickness: 0.5
cloudCoverage: 0.1
cloudDirection: 0
cloudZoom: 100
--- !u!1 &4095360099563520640
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6499996012299327601}
- component: {fileID: 6912104807958166796}
m_Layer: 0
m_Name: CameraPivot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6499996012299327601
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4095360099563520640}
serializedVersion: 2
m_LocalRotation: {x: 0.09904577, y: 0.8923991, z: -0.23911765, w: 0.36964378}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 745590008549767091}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 30, y: 135, z: 0}
--- !u!114 &6912104807958166796
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4095360099563520640}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0717b4fb631d34d44a07d1b42a6b73ee, type: 3}
m_Name:
m_EditorClassIdentifier:
_mouseSensitivity: 4
_rotationSpeed: 5

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e948be65be2984fbc9ddf9ace1a7d4d8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,96 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1198576531615060406
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6028989799815382279}
- component: {fileID: 3298906188457390365}
m_Layer: 0
m_Name: DirectionalLight
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6028989799815382279
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1198576531615060406}
serializedVersion: 2
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!108 &3298906188457390365
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1198576531615060406}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 1
m_NormalBias: 0
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 79972ebbc68a545c383d16456b6a9177
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

83
Assets/Pixel3D/README.md Normal file
View file

@ -0,0 +1,83 @@
# Readme
## Todo
- [ ] Add trees + leaf shader
- [ ] Add water shader
- [ ] Add cloud shader (potentially baked onto _ShadowMapTexture?)
- [ ] Add random weeds and flowers
- [ ] Add frustum culling and occlusion culling to grass
- [ ] Pixel perfect camera with zoom and pan
- [ ] Fix ghost mesh culling shadows at world origin
- [ ] Poor depth outlining on large terrain of steep angles
- [ ] Fix grass angle occluded on steep terrain
## Info
- <https://iquilezles.org/articles/voronoise/>
- <https://bruop.github.io/frustum_culling/>
- <https://www.shadertoy.com/playlist/fXlXzf&from=0&num=12>
- <https://www.shadertoy.com/view/lsl3RH>
- <https://forum.unity.com/threads/how-to-extract-view-depth-from-a-camera-render-with-a-shader.1506944>
- <https://ameye.dev/notes/shaders-done-quick/>
## Priority todo
- [x] Pixel Perfect Outlining [6]
- [x] Generate pixel perfect outlines around the internal and external edges of all objects [4]
- [x] Internal [2]
- [x] Outline [1]
- [x] Pixel perfect (in majority) [1]
- [x] External [2]
- [x] Outline [1]
- [x] Pixel perfect (in majority) [1]
- [x] Options: on/off [1], colors [1]
- [ ] Pixel Perfect Camera [6]
- [x] Ensures pixel art remains crisp and clear at different resolutions [2]
- [x] Downscale [1]
- [x] Maintain aspect ratio [1]
- [ ] Ensures stability in motion without excessive "jittering" [4]
- [x] Zoom in (pixel space) [1]
- [x] Zoom in (world space) [1]
- [x] Rotation keeping viewport center in place [1]
- [ ] Translation pixel offset [1]
- [x] Foliage Rending [8]
- [x] Rendering of grass on top of meshes with GPU instancing [2]
- [x] Rendering [1]
- [x] GPU instancing [1]
- [x] Rendering of leaves on top of trees with GPU instancing [2]
- [x] Rendering [1]
- [x] GPU instancing [1]
- [x] Frustum culling and chunking to improve performance [3]
- [x] Chunking [1.5]
- [x] Frustum culling [1.5]
- [x] Options: density, colors, wind speed/strength [1]
- [ ] Lighting [8]
- [x] Cell shader with custom banding textures and real-time lighting [2]
- [x] Cell shader [1]
- [x] Custom banding texture [1]
- [ ] Point lights and directional lights with multi-light shading [3]
- [x] Directional lights [1]
- [ ] Point lights [1]
- [ ] Multi-light [1]
- [x] Shadows [3]
- [x] Receive shadows [1]
- [x] Cast shadows [1]
- [x] Shadow threshold (for hard/soft shadows) [1]
- [x] Clouds [6]
- [x] Renders clouds over environment [4]
- [x] Noise rendering [1]
- [x] Layered noise [1]
- [x] Movement [1]
- [x] Accurate shadow projection [1]
- [x] Options: cloud coverage [0.66], speed [0.66], direction [0.66]
- [ ] Water [6]
- [ ] Renders water and other liquids with reflection and refraction [3]
- [x] Renders [1]
- [ ] Reflection [1]
- [x] Refraction [1]
- [ ] Reacts to movement with ripples [2]
- [x] Ripples [1]
- [ ] React to movement [1]
- [x] Outline edges for objects both inside and outside the water [0.5]
- [x] Options: color, absorption, viscosity [0.5]

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: adef5c5638f43408ba6749be621ff08e
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a9a5f4aceea0646ef849b97b6f8a71c5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6d0d42069efd844789398b83e676e0cc
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1a914a60303b94d508b8803b112c7303
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,284 @@
using UnityEditor;
using UnityEngine;
using static System.Runtime.InteropServices.Marshal;
[RequireComponent(typeof(MeshGenerator))]
public class GrassInstancer : MonoBehaviour
{
[SerializeField] LayerMask _grassLayer;
[SerializeField] Mesh _grassMesh;
[SerializeField] Material _material;
[SerializeField] float _density = 10;
[SerializeField] int _seed = 42;
MeshGenerator _meshGenerator;
RenderParams _renderParams;
GraphicsBuffer.IndirectDrawIndexedArgs[] commandData;
struct GrassData
{
public Vector3 position;
public Vector2 colorTexUV;
}
struct GrassChunk
{
public Vector2Int sampleCount;
public GraphicsBuffer commandBuffer;
public ComputeBuffer grassBuffer;
public Bounds bounds;
public Material material;
public Vector2 uvMin;
public Vector2 uvMax;
}
GrassChunk[] grassChunks;
[SerializeField] int chunkCount = 1;
void OnEnable()
{
Setup();
}
void OnDisable()
{
FreeChunks();
}
void Setup()
{
_meshGenerator = GetComponent<MeshGenerator>();
if (_meshGenerator == null)
Debug.LogError("MeshGenerator is null");
var meshRenderer = GetComponent<MeshRenderer>();
if (meshRenderer == null)
Debug.LogError("MeshRenderer is null");
if (_material == null)
Debug.LogError("Material is null");
if (_grassMesh == null)
Debug.LogError("Grass mesh is null");
}
// Initialize the chunks
public void InitChunks()
{
// Ensure the chunks are freed
FreeChunks();
// Create the chunks
grassChunks = new GrassChunk[chunkCount * chunkCount];
for (int y = 0; y < chunkCount; y++)
{
for (int x = 0; x < chunkCount; x++)
{
var chunkIndex = y * chunkCount + x;
var bounds = GetChunkBounds(x, y);
var uvMin = new Vector2(x, y) / chunkCount;
var uvMax = uvMin + Vector2.one / chunkCount;
var size = new Vector2(bounds.size.x, bounds.size.z);
var sampleCount = new Vector2Int((int)(_density * size.x), (int)(_density * size.y));
grassChunks[chunkIndex] = new GrassChunk
{
commandBuffer = new GraphicsBuffer(GraphicsBuffer.Target.IndirectArguments, 1, GraphicsBuffer.IndirectDrawIndexedArgs.size),
grassBuffer = new ComputeBuffer(sampleCount.x * sampleCount.y, SizeOf<GrassData>()),
bounds = bounds,
sampleCount = sampleCount,
material = _material,
uvMin = uvMin,
uvMax = uvMax,
};
}
}
}
// Setup a chunk
void SetupChunk(GrassChunk chunk)
{
if (chunk.sampleCount.x <= 0 || chunk.sampleCount.y <= 0)
return;
// Initialize the matrices
var grassData = new GrassData[chunk.sampleCount.x * chunk.sampleCount.y];
var meshSize = new Vector2(_meshGenerator.size.x, _meshGenerator.size.z);
// Loop through each grass
var index = 0;
for (int y = 0; y < chunk.sampleCount.y; y++)
{
for (int x = 0; x < chunk.sampleCount.x; x++)
{
// Calculate the position and uvs with random offset
var randomOffset = Random.insideUnitCircle / 2;
var chunkUV = (new Vector2(x, y) + Vector2.one / 2 + randomOffset) / chunk.sampleCount;
var worldUV = new Vector2(
Remap(chunkUV.x, 0, 1, chunk.uvMin.x, chunk.uvMax.x),
Remap(chunkUV.y, 0, 1, chunk.uvMin.y, chunk.uvMax.y)
);
var position2D = (worldUV - Vector2.one / 2) * meshSize;
var height = _meshGenerator.GetMeshHeight(worldUV);
var position = transform.TransformPoint(new Vector3(position2D.x, height, position2D.y));
// Set the grass data
grassData[index] = new GrassData
{
position = position,
colorTexUV = worldUV
};
// Increment the index
index++;
}
}
chunk.grassBuffer.SetData(grassData);
commandData = new GraphicsBuffer.IndirectDrawIndexedArgs[1];
commandData[0] = new GraphicsBuffer.IndirectDrawIndexedArgs
{
indexCountPerInstance = _grassMesh.GetIndexCount(0),
instanceCount = (uint)(chunk.sampleCount.x * chunk.sampleCount.y),
startIndex = _grassMesh.GetIndexStart(0),
baseVertexIndex = _grassMesh.GetBaseVertex(0),
startInstance = 0,
};
chunk.commandBuffer.SetData(commandData);
}
// Free the chunks
void FreeChunks()
{
if (grassChunks == null)
return;
foreach (var chunk in grassChunks)
{
chunk.commandBuffer?.Release();
chunk.grassBuffer?.Release();
}
grassChunks = null;
}
void OnDrawGizmos()
{
if (grassChunks == null)
return;
foreach (var chunk in grassChunks)
{
Gizmos.color = Color.red;
Gizmos.DrawWireCube(chunk.bounds.center, chunk.bounds.size);
}
}
// Get the bounds of a chunk
Bounds GetChunkBounds(int x, int y)
{
var size = new Vector2(_meshGenerator.size.x, _meshGenerator.size.z);
var chunkSize = size / chunkCount;
var chunkPosition = new Vector2(x, y) * chunkSize - size / 2;
var chunkBounds = new Bounds();
var min = new Vector3(chunkPosition.x, 0, chunkPosition.y);
var max = new Vector3(chunkPosition.x + chunkSize.x, _meshGenerator.size.y, chunkPosition.y + chunkSize.y);
chunkBounds.SetMinMax(
transform.TransformPoint(min),
transform.TransformPoint(max)
);
return chunkBounds;
}
// Remap a value from one range to another
float Remap(float value, float low1, float high1, float low2, float high2)
{
return low2 + (value - low1) * (high2 - low2) / (high1 - low1);
}
public void Generate()
{
// Set the seed
Random.InitState(_seed);
// Set the constant render params
var block = new MaterialPropertyBlock();
block.SetTexture("_ColorTex", _meshGenerator.colorTexture);
block.SetFloat("_MeshHeight", _grassMesh.bounds.size.y);
_renderParams = new RenderParams(_material)
{
layer = (int)Mathf.Log(_grassLayer.value, 2),
worldBounds = new Bounds(Vector3.zero, 10000 * Vector3.one),
matProps = block,
receiveShadows = true,
};
// Generate the chunks
InitChunks();
foreach (var chunk in grassChunks)
SetupChunk(chunk);
}
// Update the rotation of the grass
void UpdateRotation()
{
var target = Camera.main.transform.position;
var rotation = Quaternion.LookRotation(transform.position - target, Vector3.up);
var quaternion = new Vector4(rotation.x, rotation.y, rotation.z, rotation.w);
_renderParams.matProps.SetVector("_Rotation", quaternion);
}
void RenderChunks()
{
// Update the rotation
UpdateRotation();
// Render the chunks
foreach (var chunk in grassChunks)
{
// Frustum culling check for the chunk
var frustumPlanes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
if (!GeometryUtility.TestPlanesAABB(frustumPlanes, chunk.bounds))
continue;
// Render the chunk
_renderParams.matProps.SetBuffer("_GrassData", chunk.grassBuffer);
Graphics.RenderMeshIndirect(_renderParams, _grassMesh, chunk.commandBuffer);
}
}
void Update()
{
// Validation checks
if (_meshGenerator == null)
Setup();
if (!_meshGenerator.IsMeshGenerated())
_meshGenerator.GenerateTerrainMesh();
if (transform.lossyScale != Vector3.one)
Debug.LogWarning("GrassInstancer does not support scaling");
if (grassChunks == null || grassChunks.Length == 0)
Generate();
// Render the chunks
RenderChunks();
}
}
#if UNITY_EDITOR
// Custom editor which adds a button to generate the terrain
[CustomEditor(typeof(GrassInstancer))]
public class GrassInstancerEditor : Editor
{
public override void OnInspectorGUI()
{
var script = (GrassInstancer)target;
DrawDefaultInspector();
GUILayout.Space(10);
// GUILayout.Label("Sample Count: " + script.GetSampleCount());
if (GUILayout.Button("Generate Grass"))
script.Generate();
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0f0b6253ae2084750ad5801aa8fd8c18
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,51 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IsometricCameraPivot : MonoBehaviour
{
float _targetAngleY;
float _currentAngleY;
float _targetAngleX;
float _currentAngleX;
[SerializeField] float _mouseSensitivity = 2;
[SerializeField] float _rotationSpeed = 5;
void Awake()
{
_targetAngleY = transform.eulerAngles.y;
_targetAngleX = transform.eulerAngles.x;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
if (Input.GetMouseButton(0))
{
_targetAngleY += mouseX * _mouseSensitivity;
_targetAngleX -= mouseY * _mouseSensitivity / 3;
}
else
{
_targetAngleY = Mathf.Round(_targetAngleY / 45) * 45;
_targetAngleX = Mathf.Round(_targetAngleX / 15) * 15;
}
_targetAngleY = (_targetAngleY + 360) % 360;
_targetAngleX = Mathf.Clamp(_targetAngleX, 23, 67);
_currentAngleY = Mathf.LerpAngle(transform.eulerAngles.y, _targetAngleY, Time.deltaTime * _rotationSpeed);
_currentAngleX = Mathf.LerpAngle(transform.eulerAngles.x, _targetAngleX, Time.deltaTime * _rotationSpeed);
if (Mathf.Abs(_currentAngleY - _targetAngleY) < 0.1f) _currentAngleY = _targetAngleY;
if (Mathf.Abs(_currentAngleX - _targetAngleX) < 0.1f) _currentAngleX = _targetAngleX;
transform.rotation = Quaternion.Euler(_currentAngleX, _currentAngleY, 0);
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0717b4fb631d34d44a07d1b42a6b73ee
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,192 @@
using UnityEditor;
using UnityEngine;
using static System.Runtime.InteropServices.Marshal;
[RequireComponent(typeof(MeshSurfaceSampler))]
public class LeafInstancer : MonoBehaviour
{
[SerializeField] LayerMask _grassLayer;
[SerializeField] Mesh _leafMesh;
[SerializeField] Material _material;
MeshSurfaceSampler _meshSurfaceSampler;
RenderParams _renderParams;
GraphicsBuffer commandBuffer;
GraphicsBuffer.IndirectDrawIndexedArgs[] commandData;
LeafData[] leafData;
ComputeBuffer leafBuffer;
const int commandCount = 1;
struct LeafData
{
public Vector3 position;
public Vector3 normal;
}
void OnEnable()
{
Setup();
}
void OnDisable()
{
commandBuffer?.Release();
commandBuffer = null;
leafBuffer?.Release();
leafBuffer = null;
}
void Setup()
{
_meshSurfaceSampler = GetComponent<MeshSurfaceSampler>();
if (_meshSurfaceSampler == null)
Debug.LogError("MeshGenerator is null");
var meshRenderer = GetComponent<MeshRenderer>();
if (meshRenderer == null)
Debug.LogError("MeshRenderer is null");
if (_material == null)
Debug.LogError("Material is null");
if (_leafMesh == null)
Debug.LogError("Grass mesh is null");
}
public void GeneratePoints()
{
_meshSurfaceSampler.GeneratePoints();
}
public Bounds GetBoundingBox()
{
Bounds boundingBox = new Bounds();
if (_meshSurfaceSampler.points != null && _meshSurfaceSampler.points.Length > 0)
{
Vector3 minPoint = _meshSurfaceSampler.points[0];
Vector3 maxPoint = _meshSurfaceSampler.points[0];
for (int i = 1; i < _meshSurfaceSampler.points.Length; i++)
{
minPoint = Vector3.Min(minPoint, _meshSurfaceSampler.points[i]);
maxPoint = Vector3.Max(maxPoint, _meshSurfaceSampler.points[i]);
}
boundingBox.SetMinMax(minPoint, maxPoint);
}
var extrude = _material.GetFloat("_Extrude");
boundingBox.Expand(boundingBox.size * extrude);
return boundingBox;
}
public void Generate()
{
var count = _meshSurfaceSampler.points.Length;
// var count = 1;
leafData = new LeafData[count];
leafBuffer?.Release();
leafBuffer = new ComputeBuffer(count, SizeOf<LeafData>());
commandBuffer?.Release();
commandBuffer = new GraphicsBuffer(GraphicsBuffer.Target.IndirectArguments, commandCount, GraphicsBuffer.IndirectDrawIndexedArgs.size);
commandData = new GraphicsBuffer.IndirectDrawIndexedArgs[commandCount];
for (int i = 0; i < count; i++)
{
leafData[i] = new LeafData
{
position = _meshSurfaceSampler.points[i],
normal = _meshSurfaceSampler.normals[i]
};
}
// Set the buffers
var indirectDrawIndexedArgs = new GraphicsBuffer.IndirectDrawIndexedArgs
{
indexCountPerInstance = _leafMesh.GetIndexCount(0),
instanceCount = (uint)count,
startIndex = _leafMesh.GetIndexStart(0),
baseVertexIndex = _leafMesh.GetBaseVertex(0),
startInstance = 0,
};
for (int i = 0; i < commandCount; i++)
commandData[i] = indirectDrawIndexedArgs;
commandBuffer.SetData(commandData);
leafBuffer.SetData(leafData);
// Set the render params
var block = new MaterialPropertyBlock();
block.SetBuffer("_LeafData", leafBuffer);
_renderParams = new RenderParams(_material)
{
layer = (int)Mathf.Log(_grassLayer.value, 2),
worldBounds = new Bounds(Vector3.zero, 10000 * Vector3.one),
matProps = block,
receiveShadows = true,
};
UpdateRotation();
}
// Update the rotation of the grass
void UpdateRotation()
{
var target = Camera.main.transform.position;
var rotation = Quaternion.LookRotation(transform.position - target, Vector3.up);
var quaternion = new Vector4(rotation.x, rotation.y, rotation.z, rotation.w);
_renderParams.matProps.SetVector("_Rotation", quaternion);
}
void Update()
{
// Validation checks
if (_meshSurfaceSampler == null)
Setup();
if (!_meshSurfaceSampler.ArePointsGenerated())
_meshSurfaceSampler.GeneratePoints();
// if (transform.lossyScale != Vector3.one)
// Debug.LogWarning("GrassInstancer does not support scaling");
if (leafData == null || leafData.Length == 0)
Generate();
UpdateRotation();
// Frustum culling check for the chunk
var frustumPlanes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
if (!GeometryUtility.TestPlanesAABB(frustumPlanes, GetBoundingBox()))
return;
// Render the grass
Graphics.RenderMeshIndirect(_renderParams, _leafMesh, commandBuffer, commandCount);
}
}
#if UNITY_EDITOR
// Custom editor which adds a button to generate the terrain
[CustomEditor(typeof(LeafInstancer))]
public class LeafInstancerEditor : Editor
{
public override void OnInspectorGUI()
{
var script = (LeafInstancer)target;
DrawDefaultInspector();
GUILayout.Space(10);
if (GUILayout.Button("Generate Leaves"))
{
script.GeneratePoints();
script.Generate();
}
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 271baf40419394e30b857a667e336d88
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,185 @@
using UnityEngine;
using UnityEditor;
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class MeshGenerator : MonoBehaviour
{
public Texture2D heightMap;
public Vector3 size = new Vector3(10, 3, 10);
public Vector2Int sampleCount = new Vector2Int(25, 25);
public LayerMask terrainLayer;
[HideInInspector] public MeshData meshData;
[HideInInspector] public Mesh mesh;
[HideInInspector] public RenderTexture colorTexture;
void OnEnable()
{
var colorCameraObject = new GameObject("Color Camera");
colorCameraObject.transform.parent = transform;
colorCameraObject.transform.localPosition = Vector3.zero;
var offset = new Vector3(0, size.y, 0);
var rotation = Quaternion.Euler(90, 0, 0);
colorCameraObject.transform.SetLocalPositionAndRotation(offset, rotation);
var colorCamera = colorCameraObject.AddComponent<Camera>();
colorCamera.orthographic = true;
colorCamera.orthographicSize = size.z / 2;
colorCamera.aspect = size.x / size.z;
colorCamera.nearClipPlane = 0;
colorCamera.clearFlags = CameraClearFlags.Nothing;
colorCamera.depthTextureMode = DepthTextureMode.None;
colorCamera.cullingMask = 1 << (int)Mathf.Log(terrainLayer.value, 2);
colorTexture = new RenderTexture(1024, 1024, 0, RenderTextureFormat.ARGB32);
colorCamera.targetTexture = colorTexture;
}
public void GenerateTerrainMesh()
{
// Check if the height map is null
if (heightMap == null)
{
Debug.LogError("Height map is null");
return;
}
// Initialize the mesh data
meshData = new MeshData(sampleCount.x, sampleCount.y);
// Loop through each vertex
var index = 0;
for (var y = 0; y < sampleCount.y; y++)
{
for (var x = 0; x < sampleCount.x; x++)
{
// Calculate the uv, vertex position
var uv = new Vector2(x, y) / (sampleCount - Vector2.one);
var vertex = (uv - Vector2.one / 2) * new Vector2(size.x, size.z);
var heightValue = GetTrueHeight(uv);
// Set the vertex position and uv
meshData.vertices[index] = new Vector3(vertex.x, heightValue, vertex.y);
meshData.uvs[index] = uv;
// Add triangles if not at the edge
if (x < sampleCount.x - 1 && y < sampleCount.y - 1)
{
meshData.AddTriangle(index, index + sampleCount.x + 1, index + sampleCount.x);
meshData.AddTriangle(index + sampleCount.x + 1, index, index + 1);
}
// Increment the index
index++;
}
}
// Create the mesh
mesh = meshData.CreateMesh();
var meshFilter = GetComponent<MeshFilter>();
if (meshFilter != null)
meshFilter.sharedMesh = mesh;
else
Debug.LogError("Mesh filter is null");
var meshCollider = GetComponent<MeshCollider>();
if (meshCollider != null)
meshCollider.sharedMesh = mesh;
}
// Get the height of the terrain at the given uv from the mesh
public float GetMeshHeight(Vector2 uv)
{
// Calculate the precise indices
float xIndexPrecise = uv.x * (sampleCount.x - 1);
float zIndexPrecise = uv.y * (sampleCount.y - 1);
// Calculate the indices of the vertices around the point
var xIndex = Mathf.FloorToInt(uv.x * (sampleCount.x - 1));
var zIndex = Mathf.FloorToInt(uv.y * (sampleCount.y - 1));
// Ensure indices are within the bounds of the mesh
xIndex = Mathf.Clamp(xIndex, 0, sampleCount.x - 2);
zIndex = Mathf.Clamp(zIndex, 0, sampleCount.y - 2);
// Get the four vertices of the square (assuming row major and clockwise order)
var v1 = meshData.vertices[zIndex * sampleCount.x + xIndex];
var v2 = meshData.vertices[zIndex * sampleCount.x + xIndex + 1];
var v3 = meshData.vertices[(zIndex + 1) * sampleCount.x + xIndex];
var v4 = meshData.vertices[(zIndex + 1) * sampleCount.x + xIndex + 1];
// Bilinear interpolation
var xRem = xIndexPrecise - xIndex;
var zRem = zIndexPrecise - zIndex;
var height1 = Mathf.Lerp(v1.y, v2.y, xRem);
var height2 = Mathf.Lerp(v3.y, v4.y, xRem);
return Mathf.Lerp(height1, height2, zRem);
}
// Get the true height of the terrain at the given uv from the height map
public float GetTrueHeight(Vector2 uv)
{
var x = Mathf.RoundToInt(uv.x * heightMap.width);
var y = Mathf.RoundToInt(uv.y * heightMap.height);
return heightMap.GetPixel(x, y).grayscale * size.y; ;
}
// Check if the mesh and mesh data are generated
public bool IsMeshGenerated()
{
return mesh != null && meshData != null;
}
}
// MeshData class which allows for easy mesh creation
public class MeshData
{
public Vector3[] vertices;
public int[] triangles;
public Vector2[] uvs;
int triangleIndex;
public MeshData(int meshWidth, int meshHeight)
{
vertices = new Vector3[meshWidth * meshHeight];
uvs = new Vector2[meshWidth * meshHeight];
triangles = new int[(meshWidth - 1) * (meshHeight - 1) * 6];
}
public void AddTriangle(int a, int b, int c)
{
triangles[triangleIndex] = a;
triangles[triangleIndex + 1] = c;
triangles[triangleIndex + 2] = b;
triangleIndex += 3;
}
public Mesh CreateMesh()
{
var mesh = new Mesh
{
vertices = vertices,
triangles = triangles,
uv = uvs
};
mesh.RecalculateNormals();
return mesh;
}
}
#if UNITY_EDITOR
// Custom editor which adds a button to generate the terrain
[CustomEditor(typeof(MeshGenerator))]
public class MeshGeneratorEditor : Editor
{
public override void OnInspectorGUI()
{
var script = (MeshGenerator)target;
DrawDefaultInspector();
GUILayout.Space(10);
if (GUILayout.Button("Generate Terrain"))
script.GenerateTerrainMesh();
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ff993955589c54d1f980c40c04421832
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,80 @@
using System.Collections.Generic;
using UnityEngine;
public class MeshSurfaceSampler : MonoBehaviour
{
[SerializeField] float _density = 1;
[SerializeField] int seed = 42;
Mesh _mesh;
[HideInInspector] public Vector3[] points;
[HideInInspector] public Vector3[] normals;
void OnEnable()
{
_mesh = GetComponent<MeshFilter>().mesh;
GeneratePoints();
}
public void GeneratePoints()
{
Random.InitState(seed);
var tris = _mesh.triangles;
var triangleAreas = new float[tris.Length / 3];
var totalArea = 0.0f;
for (var i = 0; i < tris.Length; i += 3)
{
var v1 = _mesh.vertices[tris[i]];
var v2 = _mesh.vertices[tris[i + 1]];
var v3 = _mesh.vertices[tris[i + 2]];
var area = TriangleArea(v1, v2, v3);
totalArea += area;
triangleAreas[i / 3] = area;
}
var pointList = new List<Vector3>();
var normalList = new List<Vector3>();
var totalPoints = Mathf.CeilToInt(totalArea * _density);
for (var i = 0; i < triangleAreas.Length; i++)
{
var pointsInThisTriangle = Mathf.CeilToInt(triangleAreas[i] / totalArea * totalPoints);
for (var j = 0; j < pointsInThisTriangle; j++)
{
(Vector3 point, Vector3 normal) = RandomPointAndNormalInTriangle(
_mesh.vertices[tris[i * 3]], _mesh.vertices[tris[i * 3 + 1]], _mesh.vertices[tris[i * 3 + 2]],
_mesh.normals[tris[i * 3]], _mesh.normals[tris[i * 3 + 1]], _mesh.normals[tris[i * 3 + 2]]);
pointList.Add(transform.TransformPoint(point));
// normalList.Add(normal);
normalList.Add(transform.TransformDirection(normal));
// Debug.DrawRay(point, normal, Color.red, 10);
}
}
points = pointList.ToArray();
normals = normalList.ToArray();
}
float TriangleArea(Vector3 v1, Vector3 v2, Vector3 v3)
{
return Vector3.Cross(v1 - v2, v1 - v3).magnitude * 0.5f;
}
(Vector3, Vector3) RandomPointAndNormalInTriangle(Vector3 v1, Vector3 v2, Vector3 v3, Vector3 n1, Vector3 n2, Vector3 n3)
{
var r1 = Mathf.Sqrt(Random.value);
var r2 = Random.value;
var point = (1 - r1) * v1 + r1 * (1 - r2) * v2 + r1 * r2 * v3;
var normal = ((1 - r1) * n1 + r1 * (1 - r2) * n2 + r1 * r2 * n3).normalized;
return (point, normal);
}
public bool ArePointsGenerated()
{
return points != null && points.Length > 0;
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 99677e4825d094c0eab5be922e28904d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,474 @@
using UnityEngine;
using UnityEngine.Rendering;
[RequireComponent(typeof(Camera)),
// RequireComponent(typeof(SceneColorSetup))
]
public class PostProcesser : MonoBehaviour
{
[Header("Grass Overlaying Shaders")]
public LayerMask grassLayer;
public ShaderState grassState = ShaderState.On;
public Shader grassReplacementShader;
public float alphaThreshold = 0.5f;
private GameObject _grassCameraObject;
[Header("Pixel Shader")]
public ShaderState pixelState = ShaderState.On;
public bool dynamicPixelSize = false;
public int screenHeight = 192;
public float pixelsPerUnit = 24f;
[Range(1f / 32f, 1)] public float zoom = 0.125f;
[Header("Outline Shader")]
public ShaderState outlineState = ShaderState.On;
public Color outlineColor = Color.black;
public Color edgeColor = Color.white;
public float depthThreshold = 0.02f;
public float normalThreshold = 0.05f;
public Vector3 normalEdgeBias = Vector3.one;
public float angleThreshold = 0.5f;
public int angleFactorScale = 7;
[Header("Cloud Shader")]
public ShaderState cloudState = ShaderState.On;
public Texture2D cloudsFineDetail;
public Texture2D cloudsMediumDetail;
public Texture2D cloudsLargeDetail;
public Light lightSource;
public float cloudSpeed = 0.1f;
[Range(0, 1)] public float cloudThickness = 0.5f;
[Range(0, 1)] public float cloudCoverage = 0.5f;
[Range(0, 360)] public float cloudDirection = 30f;
public float cloudZoom = 10f;
public enum ShaderState
{
On,
Off,
Debug,
}
void OnEnable()
{
// Camera.main.depthTextureMode = DepthTextureMode.MotionVectors | DepthTextureMode.DepthNormals | DepthTextureMode.Depth;
Camera.main.depthTextureMode = DepthTextureMode.DepthNormals | DepthTextureMode.Depth;
if (grassState != ShaderState.Debug)
Camera.main.cullingMask = ~(1 << (int)Mathf.Log(grassLayer.value, 2));
if (grassState == ShaderState.On && _grassCameraObject == null)
{
_grassCameraObject = new GameObject("GrassCamera");
_grassCameraObject.transform.SetParent(Camera.main.transform);
_grassCameraObject.AddComponent<Camera>();
}
}
void OnDisable()
{
if (_grassCameraObject != null)
{
Destroy(_grassCameraObject);
_grassCameraObject = null;
}
}
void UpdateZoom()
{
if (Camera.main == null)
return;
Camera.main.orthographicSize = 1 / zoom;
var farPlane = 20 / zoom;
var pos = Camera.main.transform.localPosition;
pos.z = -farPlane / 2;
Camera.main.transform.SetLocalPositionAndRotation(pos, Quaternion.identity);
Camera.main.farClipPlane = farPlane;
}
void OnValidate()
{
UpdateZoom();
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
var outlineMaterial = CoreUtils.CreateEngineMaterial("Custom/PixelPerfectOutline");
outlineMaterial.SetFloat("_DepthThreshold", depthThreshold);
outlineMaterial.SetFloat("_AngleThreshold", angleThreshold);
outlineMaterial.SetFloat("_AngleFactorScale", angleFactorScale);
outlineMaterial.SetFloat("_NormalThreshold", normalThreshold);
outlineMaterial.SetVector("_NormalEdgeBias", normalEdgeBias);
outlineMaterial.SetInteger("_DebugOutline", outlineState == ShaderState.Debug ? 1 : 0);
outlineMaterial.SetColor("_OutlineColor", outlineColor);
outlineMaterial.SetColor("_EdgeColor", edgeColor);
var grassBlendingMaterial = CoreUtils.CreateEngineMaterial("Custom/GrassBlending");
grassBlendingMaterial.SetFloat("_AlphaThreshold", alphaThreshold);
UpdateZoom();
var pixelScreenHeight = screenHeight;
if (dynamicPixelSize)
{
pixelScreenHeight = (int)(1 / zoom * pixelsPerUnit);
}
var pixelScreenWidth = (int)(pixelScreenHeight * Camera.main.aspect + 0.5f);
var tempTex = RenderTexture.GetTemporary(src.descriptor);
var grassTex = RenderTexture.GetTemporary(src.descriptor);
var cloudTex = RenderTexture.GetTemporary(2048, 2048);
var screenSize = new Vector2(Screen.width, Screen.height);
if (pixelState == ShaderState.On)
{
src.filterMode = FilterMode.Point;
tempTex.Release();
tempTex.height = pixelScreenHeight;
tempTex.width = pixelScreenWidth;
tempTex.filterMode = FilterMode.Point;
tempTex.Create();
grassTex.Release();
grassTex.height = pixelScreenHeight;
grassTex.width = pixelScreenWidth;
grassTex.filterMode = FilterMode.Point;
grassTex.Create();
screenSize = new Vector2(pixelScreenWidth, pixelScreenHeight);
}
else
{
src.filterMode = FilterMode.Bilinear;
tempTex.filterMode = FilterMode.Bilinear;
tempTex.Release();
tempTex.Create();
grassTex.filterMode = FilterMode.Bilinear;
grassTex.Release();
grassTex.Create();
}
if (cloudState == ShaderState.On)
{
var cloudMaterial = CoreUtils.CreateEngineMaterial("Custom/Clouds");
cloudMaterial.SetFloat("_Speed", cloudSpeed);
cloudMaterial.SetFloat("_Coverage", cloudCoverage);
cloudMaterial.SetFloat("_Thickness", cloudThickness);
cloudMaterial.SetFloat("_Direction", cloudDirection);
cloudMaterial.SetTexture("_FineDetail", cloudsFineDetail);
cloudMaterial.SetTexture("_MediumDetail", cloudsMediumDetail);
cloudMaterial.SetTexture("_LargeDetail", cloudsLargeDetail);
var cloudTexTemp = RenderTexture.GetTemporary(2048, 2048);
cloudTexTemp.filterMode = FilterMode.Bilinear;
cloudTexTemp.wrapMode = TextureWrapMode.Repeat;
cloudTex.filterMode = FilterMode.Bilinear;
cloudTex.wrapMode = TextureWrapMode.Repeat;
Graphics.Blit(cloudTexTemp, cloudTex, cloudMaterial);
RenderTexture.ReleaseTemporary(cloudTexTemp);
lightSource.cookie = cloudTex;
lightSource.cookieSize = cloudZoom;
}
else
{
lightSource.cookie = null;
}
outlineMaterial.SetVector("_ScreenSize", screenSize);
Camera grassCamera = null;
if (grassState == ShaderState.On)
{
grassCamera = _grassCameraObject.GetComponent<Camera>();
grassCamera.enabled = false;
}
if (grassState == ShaderState.On && outlineState != ShaderState.Debug && grassCamera != null)
{
// var grassCameraObject = new GameObject("GrassCamera");
// grassCameraObject.transform.SetParent(Camera.main.transform);
// var grassCamera = _grassCameraObject.GetComponent<Camera>();
grassCamera.CopyFrom(Camera.main);
grassCamera.targetTexture = grassTex;
grassCamera.cullingMask = -1;
grassCamera.clearFlags = CameraClearFlags.Nothing;
grassCamera.enabled = true;
grassCamera.RenderWithShader(grassReplacementShader, "RenderType");
grassCamera.enabled = false;
// Destroy(grassCameraObject);
grassBlendingMaterial.SetTexture("_GrassTex", grassTex);
}
if (outlineState != ShaderState.Off)
{
Graphics.Blit(src, tempTex, outlineMaterial);
if (grassState == ShaderState.On && outlineState != ShaderState.Debug)
Graphics.Blit(tempTex, dest, grassBlendingMaterial);
else
Graphics.Blit(tempTex, dest);
}
else if (grassState == ShaderState.On)
{
Graphics.Blit(src, tempTex, grassBlendingMaterial);
Graphics.Blit(tempTex, dest);
}
else
{
Graphics.Blit(src, tempTex);
Graphics.Blit(tempTex, dest);
}
if (grassCamera != null)
grassCamera.targetTexture = null;
RenderTexture.ReleaseTemporary(tempTex);
RenderTexture.ReleaseTemporary(grassTex);
RenderTexture.ReleaseTemporary(cloudTex);
Graphics.SetRenderTarget(dest);
}
}
// using UnityEngine;
// using UnityEngine.Rendering;
// [RequireComponent(typeof(Camera)),
// RequireComponent(typeof(SceneColorSetup))]
// public class PostProcesser : MonoBehaviour
// {
// [Header("Grass Overlaying Shaders")]
// public LayerMask grassLayer;
// public ShaderState grassState = ShaderState.On;
// public Shader grassReplacementShader;
// public float alphaThreshold = 0.5f;
// private GameObject _grassCameraObject;
// [Header("Pixel Shader")]
// public ShaderState pixelState = ShaderState.On;
// public bool dynamicPixelSize = false;
// public int screenHeight = 192;
// public float pixelsPerUnit = 24f;
// [Range(1f / 32f, 1)] public float zoom = 0.125f;
// [Header("Outline Shader")]
// public ShaderState outlineState = ShaderState.On;
// public Color outlineColor = Color.black;
// public Color edgeColor = Color.white;
// public float depthThreshold = 0.02f;
// public float normalThreshold = 0.05f;
// public Vector3 normalEdgeBias = Vector3.one;
// public float angleThreshold = 0.5f;
// public int angleFactorScale = 7;
// [Header("Cloud Shader")]
// public ShaderState cloudState = ShaderState.On;
// public Texture2D cloudsFineDetail;
// public Texture2D cloudsMediumDetail;
// public Texture2D cloudsLargeDetail;
// public Light lightSource;
// public float cloudSpeed = 0.1f;
// [Range(0, 1)] public float cloudThickness = 0.5f;
// [Range(0, 1)] public float cloudCoverage = 0.5f;
// [Range(0, 360)] public float cloudDirection = 30f;
// public float cloudZoom = 10f;
// public enum ShaderState
// {
// On,
// Off,
// Debug,
// }
// void OnEnable()
// {
// Camera.main.depthTextureMode = DepthTextureMode.DepthNormals;
// if (grassState != ShaderState.Debug)
// Camera.main.cullingMask = ~(1 << (int)Mathf.Log(grassLayer.value, 2));
// if (grassState == ShaderState.On && _grassCameraObject == null)
// {
// _grassCameraObject = new GameObject("GrassCamera");
// _grassCameraObject.transform.SetParent(Camera.main.transform);
// _grassCameraObject.AddComponent<Camera>();
// }
// }
// void OnDisable()
// {
// if (_grassCameraObject != null)
// {
// Destroy(_grassCameraObject);
// _grassCameraObject = null;
// }
// }
// void UpdateZoom()
// {
// if (Camera.main == null)
// return;
// Camera.main.orthographicSize = 1 / zoom;
// var farPlane = 20 / zoom;
// var pos = Camera.main.transform.localPosition;
// pos.z = -farPlane / 2;
// Camera.main.transform.SetLocalPositionAndRotation(pos, Quaternion.identity);
// Camera.main.farClipPlane = farPlane;
// }
// void OnValidate()
// {
// UpdateZoom();
// }
// void OnRenderImage(RenderTexture src, RenderTexture dest)
// {
// var outlineMaterial = CoreUtils.CreateEngineMaterial("Custom/PixelPerfectOutline");
// outlineMaterial.SetFloat("_DepthThreshold", depthThreshold);
// outlineMaterial.SetFloat("_AngleThreshold", angleThreshold);
// outlineMaterial.SetFloat("_AngleFactorScale", angleFactorScale);
// outlineMaterial.SetFloat("_NormalThreshold", normalThreshold);
// outlineMaterial.SetVector("_NormalEdgeBias", normalEdgeBias);
// outlineMaterial.SetInteger("_DebugOutline", outlineState == ShaderState.Debug ? 1 : 0);
// outlineMaterial.SetColor("_OutlineColor", outlineColor);
// outlineMaterial.SetColor("_EdgeColor", edgeColor);
// var grassBlendingMaterial = CoreUtils.CreateEngineMaterial("Custom/GrassBlending");
// grassBlendingMaterial.SetFloat("_AlphaThreshold", alphaThreshold);
// UpdateZoom();
// var pixelScreenHeight = screenHeight;
// if (dynamicPixelSize)
// {
// pixelScreenHeight = (int)(1 / zoom * pixelsPerUnit);
// }
// var pixelScreenWidth = (int)(pixelScreenHeight * Camera.main.aspect + 0.5f);
// var tempTex = RenderTexture.GetTemporary(src.descriptor);
// var grassTex = RenderTexture.GetTemporary(src.descriptor);
// var cloudTex = RenderTexture.GetTemporary(2048, 2048);
// var screenSize = new Vector2(Screen.width, Screen.height);
// if (pixelState == ShaderState.On)
// {
// src.filterMode = FilterMode.Point;
// tempTex.Release();
// tempTex.height = pixelScreenHeight;
// tempTex.width = pixelScreenWidth;
// tempTex.filterMode = FilterMode.Point;
// tempTex.Create();
// grassTex.Release();
// grassTex.height = pixelScreenHeight;
// grassTex.width = pixelScreenWidth;
// grassTex.filterMode = FilterMode.Point;
// grassTex.Create();
// screenSize = new Vector2(pixelScreenWidth, pixelScreenHeight);
// }
// else
// {
// src.filterMode = FilterMode.Bilinear;
// tempTex.filterMode = FilterMode.Bilinear;
// tempTex.Release();
// tempTex.Create();
// grassTex.filterMode = FilterMode.Bilinear;
// grassTex.Release();
// grassTex.Create();
// }
// if (cloudState == ShaderState.On)
// {
// var cloudMaterial = CoreUtils.CreateEngineMaterial("Custom/Clouds");
// cloudMaterial.SetFloat("_Speed", cloudSpeed);
// cloudMaterial.SetFloat("_Coverage", cloudCoverage);
// cloudMaterial.SetFloat("_Thickness", cloudThickness);
// cloudMaterial.SetFloat("_Direction", cloudDirection);
// cloudMaterial.SetTexture("_FineDetail", cloudsFineDetail);
// cloudMaterial.SetTexture("_MediumDetail", cloudsMediumDetail);
// cloudMaterial.SetTexture("_LargeDetail", cloudsLargeDetail);
// var cloudTexTemp = RenderTexture.GetTemporary(2048, 2048);
// cloudTexTemp.filterMode = FilterMode.Bilinear;
// cloudTexTemp.wrapMode = TextureWrapMode.Repeat;
// cloudTex.filterMode = FilterMode.Bilinear;
// cloudTex.wrapMode = TextureWrapMode.Repeat;
// Graphics.Blit(cloudTexTemp, cloudTex, cloudMaterial);
// RenderTexture.ReleaseTemporary(cloudTexTemp);
// lightSource.cookie = cloudTex;
// lightSource.cookieSize = cloudZoom;
// }
// else
// {
// lightSource.cookie = null;
// }
// outlineMaterial.SetVector("_ScreenSize", screenSize);
// var grassCamera = _grassCameraObject.GetComponent<Camera>();
// if (grassState == ShaderState.On && outlineState != ShaderState.Debug)
// {
// grassCamera.CopyFrom(Camera.main);
// grassCamera.targetTexture = grassTex;
// grassCamera.cullingMask = -1;
// grassCamera.clearFlags = CameraClearFlags.Nothing;
// grassCamera.RenderWithShader(grassReplacementShader, "RenderType");
// grassBlendingMaterial.SetTexture("_GrassTex", grassTex);
// }
// if (outlineState != ShaderState.Off)
// {
// Graphics.Blit(src, tempTex, outlineMaterial);
// if (grassState == ShaderState.On && outlineState != ShaderState.Debug)
// Graphics.Blit(tempTex, dest, grassBlendingMaterial);
// else
// Graphics.Blit(tempTex, dest);
// }
// else if (grassState == ShaderState.On)
// {
// Graphics.Blit(src, tempTex, grassBlendingMaterial);
// Graphics.Blit(tempTex, dest);
// }
// else
// {
// Graphics.Blit(src, tempTex);
// Graphics.Blit(tempTex, dest);
// }
// if (grassCamera != null)
// grassCamera.targetTexture = null;
// RenderTexture.ReleaseTemporary(tempTex);
// RenderTexture.ReleaseTemporary(grassTex);
// RenderTexture.ReleaseTemporary(cloudTex);
// Graphics.SetRenderTarget(dest);
// }
// }

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5ae31a9a3a3e946d1a6a904b9ab115c4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,17 @@
using UnityEngine;
public class Rotator : MonoBehaviour
{
[SerializeField] float _speedX = 50f;
[SerializeField] float _speedY = 50f;
[SerializeField] float _speedZ = 50f;
void Update()
{
var rotationX = _speedX * Time.deltaTime;
var rotationY = _speedY * Time.deltaTime;
var rotationZ = _speedZ * Time.deltaTime;
transform.Rotate(rotationX, rotationY, rotationZ, Space.Self);
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2aa0b8e5a118943d3a3dd673af44c3aa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,78 @@
/*
Copies the camera buffer after rendering opaques, to _CameraOpaqueTexture property so the Scene Color node can work in the Built-in RP.
Attach this script to the Main Camera (and any other cameras you want an Opaque Texture for)
Will also work for Scene Views (Though if a new window is opened will need to enter & exit play mode)
Tested in 2022.2
@Cyanilux
*/
using UnityEngine;
using UnityEngine.Rendering;
[ExecuteAlways]
public class SceneColorSetup : MonoBehaviour
{
private Camera cam;
private CommandBuffer cmd, cmd2;
void OnEnable()
{
cam = GetComponent<Camera>();
int rtID = Shader.PropertyToID("_CameraOpaqueTexture");
if (cmd == null)
{
cmd = new CommandBuffer
{
name = "Setup Opaque Texture"
};
cmd.GetTemporaryRT(rtID, cam.pixelWidth, cam.pixelHeight, 0);
// cmd.Blit(null, rtID);
}
if (cmd2 == null)
{
cmd2 = new CommandBuffer
{
name = "Release Opaque Texture"
};
cmd2.ReleaseTemporaryRT(rtID);
}
// Game View (camera script is assigned on)
cam.AddCommandBuffer(CameraEvent.AfterForwardOpaque, cmd);
cam.AddCommandBuffer(CameraEvent.AfterEverything, cmd2);
// Scene View
#if UNITY_EDITOR
if (cam.tag == "MainCamera")
{
Camera[] sceneCameras = UnityEditor.SceneView.GetAllSceneCameras();
foreach (Camera c in sceneCameras)
{
c.AddCommandBuffer(CameraEvent.AfterForwardOpaque, cmd);
c.AddCommandBuffer(CameraEvent.AfterEverything, cmd2);
}
}
#endif
}
void OnDisable()
{
// Game View (camera script is assigned on)
cam.RemoveCommandBuffer(CameraEvent.AfterForwardOpaque, cmd);
cam.RemoveCommandBuffer(CameraEvent.AfterEverything, cmd2);
// Scene View
#if UNITY_EDITOR
if (cam.tag == "MainCamera")
{
Camera[] sceneCameras = UnityEditor.SceneView.GetAllSceneCameras();
foreach (Camera c in sceneCameras)
{
c.RemoveCommandBuffer(CameraEvent.AfterForwardOpaque, cmd);
c.RemoveCommandBuffer(CameraEvent.AfterEverything, cmd2);
}
}
#endif
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 885a2b24c00804ed7b6d4990f0849e0e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,21 @@
using UnityEngine;
public class WaterLevelShift : MonoBehaviour
{
public float shift = 0.5f;
public float speed = 0.5f;
private float waterLevel = 0f;
void Start()
{
waterLevel = transform.position.y;
}
void Update()
{
float newY = waterLevel + Mathf.Sin(Time.time * speed) * shift;
transform.position = new Vector3(transform.position.x, newY, transform.position.z);
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 869babbd4fd3b4bdbb667ec33cc4c4af
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9b4831c3e29d14ddc990eab2abbbed3c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,147 @@
#include "UnityCG.cginc"
#include "UnityLightingCommon.cginc"
#include "Lighting.cginc"
#include "AutoLight.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f
{
float4 pos : SV_POSITION;
float3 worldPos : TEXCOORD0;
float2 uv : TEXCOORD1;
float4 posLight : TEXCOORD3;
float3 normal : NORMAL;
SHADOW_COORDS(2)
};
sampler2D _MainTex;
float4 _MainTex_ST;
sampler2D _ShadeTex;
bool _UseShadeTex;
float4 _Color;
float4 _DarknessColor;
float _DarknessMidpoint;
float _ShadowThreshold;
float _ShadeBitDepth;
float remap(float value, float low1, float high1, float low2, float high2)
{
return low2 + (value - low1) * (high2 - low2) / (high1 - low1);
}
// Blend modes
#define multiply(a, b) a * b
#define screen(a, b) 1 - (1 - a) * (1 - b)
#define overlay(a, b) (2 * a * b) * step(0.5, a) + (1 - 2 * (1 - a) * (1 - b)) * (1 - step(0.5, a))
#define hardLight(a, b) overlay(b, a)
#define blend(a, b, mode) float3(mode(a.r, b.r), mode(a.g, b.g), mode(a.b, b.b))
float grayscale(float3 color)
{
return dot(color, float3(0.299, 0.587, 0.114));
}
float3 celShading(v2f i, float attenuation, float4 color, float4 lightColor, float3 lightDir)
{
// Shading texture
// float intensity = remap(dot(i.normal, lightDir), -1, 1, 0, 1);
// float4 shade = tex2D(_ShadeTex, float2(intensity, attenuation));
// shade = screen(shade, _DarknessColor);
float midpoint = remap(_DarknessMidpoint, 0, 1, -1, 1);
float intensity = remap(max(midpoint, dot(i.normal, lightDir)), midpoint, 1, 0, 1);
float4 shade = floor(intensity * _ShadeBitDepth) / _ShadeBitDepth;
if (_UseShadeTex)
{
intensity = remap(dot(i.normal, lightDir), -1, 1, 0, 1);
shade = tex2D(_ShadeTex, float2(intensity, attenuation));
}
shade = screen(shade, _DarknessColor);
float4 shadow = SHADOW_ATTENUATION(i);
shadow = step(_ShadowThreshold, shadow);
#if 0
shadow = screen(shadow, _DarknessColor);
#else
// Remove shadows from the opposite side from light
shadow = dot(i.normal, lightDir) < 0 ? 1 : screen(shadow, _DarknessColor);
#endif
float4 diffuse = color * shade * shadow * lightColor;
return diffuse.rgb;
}
float3 celShadingDirectional(v2f i, float4 color, float4 lightDir, float4 lightColor)
{
return celShading(i, 1, color, lightColor, lightDir.xyz);
}
float3 celShadingPoint(v2f i, float4 color, float4 lightPos, float4 lightColor)
{
float3 vertexToLight = lightPos.xyz - i.worldPos;
float3 lightDir = normalize(vertexToLight);
float sqLength = dot(vertexToLight, vertexToLight);
float attenuation = 1 / (1 + sqLength * lightPos.a);
return celShading(i, attenuation, color, lightColor, lightDir);
}
v2f vert(appdata v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.normal = UnityObjectToWorldNormal(v.normal);
o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
TRANSFER_SHADOW(o)
#if defined(DIRECTIONAL_COOKIE)
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
o.posLight = mul(unity_WorldToLight, posWorld);
#else
o.posLight = 0;
#endif
return o;
}
// https://en.wikibooks.org/wiki/GLSL_Programming/Unity/Multiple_Lights
float4 frag(v2f i) : COLOR
{
fixed4 sample = tex2D(_MainTex, i.uv);
// Light positions and attenuations
float4 lightPos[4] = {
float4(unity_4LightPosX0.x, unity_4LightPosY0.x, unity_4LightPosZ0.x, unity_4LightAtten0.x),
float4(unity_4LightPosX0.y, unity_4LightPosY0.y, unity_4LightPosZ0.y, unity_4LightAtten0.y),
float4(unity_4LightPosX0.z, unity_4LightPosY0.z, unity_4LightPosZ0.z, unity_4LightAtten0.z),
float4(unity_4LightPosX0.w, unity_4LightPosY0.w, unity_4LightPosZ0.w, unity_4LightAtten0.w),
};
// In ForwardBase pass, _WorldSpaceLightPos0 is always directional light
float3 diffuseReflection = celShadingDirectional(i, _Color, _WorldSpaceLightPos0, _LightColor0);
// for (int j = 0; j < 4; j++)
// {
// float3 d = celShadingPoint(i, _Color, lightPos[j], unity_LightColor[j], shadow);
// diffuseReflection = float3(max(diffuseReflection.r, d.r), max(diffuseReflection.g, d.g), max(diffuseReflection.b, d.b));
// }
// diffuseReflection = blend(diffuseReflection, celShadingPoint(i, _Color, lightPos[j], unity_LightColor[j], 0), max);
// diffuseReflection = max(diffuseReflection, celShadingPoint(i, _Color, lightPos[j], unity_LightColor[j], shadow));
#if defined(DIRECTIONAL_COOKIE)
float4 cookieAttenuation = tex2D(_LightTexture0, i.posLight.xy);
#else
float4 cookieAttenuation = 1;
#endif
// return cookieAttenuation;
// return float4(diffuseReflection, 1);
return float4(diffuseReflection, 1) * cookieAttenuation;
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4c53fe4732eb54ec9935f558ffd96b23
ShaderIncludeImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,50 @@
// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'
Shader "Custom/Cel"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
[MaterialToggle] _UseShadeTex ("Use Shade Texture", Float) = 0
_ShadeTex ("Shade Texture", 2D) = "white" {}
_Color ("Color", Color) = (1,1,1,1)
_DarknessColor ("Darkness Color", Color) = (0.5,0.5,0.5,1)
_DarknessMidpoint ("Darkness Midpoint", Range(0, 1)) = 0.5
_ShadowThreshold ("Shadow Threshold", Range(0, 1)) = 0.5
_ShadeBitDepth ("Shade Bit Depth", Range(0, 15)) = 5
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
}
Pass
{
Tags { "LightMode" = "ForwardBase" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdbase
#include "Cel.hlsl"
ENDCG
}
// https://en.wikibooks.org/wiki/Cg_Programming/Unity/Cookies
Pass {
Tags { "LightMode" = "ForwardAdd" }
CGPROGRAM
#pragma multi_compile_lightpass
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdbase
#include "Cel.hlsl"
ENDCG
}
UsePass "Legacy Shaders/VertexLit/SHADOWCASTER"
}
}

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 6ad1e8d49c3a0400cbbe4426084594c1
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,86 @@
Shader "Custom/Clouds"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_FineDetail ("Texture", 2D) = "white" {}
_MediumDetail ("Texture", 2D) = "white" {}
_LargeDetail ("Texture", 2D) = "white" {}
}
SubShader
{
Pass
{
Name "Outline"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
// sampler2D
sampler2D _FineDetail;
sampler2D _MediumDetail;
sampler2D _LargeDetail;
float _Coverage;
float _Thickness;
float _Speed;
float _Direction;
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
};
float remap(float value, float low1, float high1, float low2, float high2)
{
return low2 + (value - low1) * (high2 - low2) / (high1 - low1);
}
v2f vert(appdata v)
{
v2f o = { UnityObjectToClipPos(v.vertex), TRANSFORM_TEX(v.uv, _MainTex) };
return o;
}
fixed4 frag(v2f i) : SV_Target
{
float dir = remap(_Direction, 0, 360, 0, 6.28319);
float speed = _Speed / 100;
float2 uv = i.uv;
uv.x += _Time.y * speed * cos(dir);
uv.y += _Time.y * speed * sin(dir);
float fine = tex2D(_FineDetail, uv).a;
float medium = tex2D(_MediumDetail, uv).a;
float large = tex2D(_LargeDetail, uv).a;
// float alpha = large;
float alpha = fine * medium * large;
alpha = alpha > _Coverage ? 1 : alpha;
alpha = 1 - (1 - alpha) * (_Thickness);
// return float4(1, 1, 1, 1);
return float4(alpha.xxx, 1);
}
ENDCG
}
}
Fallback Off
}

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 90c24f969a2a34bac8361bb427173be7
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show more