init
This commit is contained in:
commit
f5c1616018
679 changed files with 188502 additions and 0 deletions
8
Assets/Pixel3D/Materials.meta
Normal file
8
Assets/Pixel3D/Materials.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3ec8060d0c12248cb82fe8c7884f6875
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Materials/Cel.meta
Normal file
8
Assets/Pixel3D/Materials/Cel.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 27825f9614bb441669bbbac17539fd4d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
42
Assets/Pixel3D/Materials/Cel/BigWater.mat
Normal file
42
Assets/Pixel3D/Materials/Cel/BigWater.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/BigWater.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/BigWater.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0354e1c1d3c1c441a86a073c5cb80694
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
99
Assets/Pixel3D/Materials/Cel/Cel.mat
Normal file
99
Assets/Pixel3D/Materials/Cel/Cel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/Cel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/Cel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: baa90b9eae9f147979baf7fe81f40975
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/CyanCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/CyanCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/CyanCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/CyanCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4ccc8b02f432e45ae8bc0ee6ee54f35f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
44
Assets/Pixel3D/Materials/Cel/DebugWater.mat
Normal file
44
Assets/Pixel3D/Materials/Cel/DebugWater.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/DebugWater.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/DebugWater.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 644e7c3b35cd14b619c6095c3fe823e0
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
95
Assets/Pixel3D/Materials/Cel/Grass.mat
Normal file
95
Assets/Pixel3D/Materials/Cel/Grass.mat
Normal 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
|
8
Assets/Pixel3D/Materials/Cel/Grass.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/Grass.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6ddce44f4f36c4cf08fffc923d8c1955
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/GrayCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/GrayCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/GrayCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/GrayCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1ee6156cceaa34eb3b0be8f934fbc232
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
104
Assets/Pixel3D/Materials/Cel/Leaf.mat
Normal file
104
Assets/Pixel3D/Materials/Cel/Leaf.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/Leaf.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/Leaf.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 70dc8d614c40a41cd981e904b0a2317e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
104
Assets/Pixel3D/Materials/Cel/LeafCel.mat
Normal file
104
Assets/Pixel3D/Materials/Cel/LeafCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/LeafCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/LeafCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 464535d2e7afd416cb6955e8271ca5b2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/LeavesCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/LeavesCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/LeavesCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/LeavesCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d87f0ea5f3e1f42d8906dd5be00b2118
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/SlateCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/SlateCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/SlateCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/SlateCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b46316203002a4927912189c9eb3e46e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
31
Assets/Pixel3D/Materials/Cel/TerrainCel.mat
Normal file
31
Assets/Pixel3D/Materials/Cel/TerrainCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/TerrainCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/TerrainCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 589c72f2a19af4eaab1f97daef0bdc33
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/TrunkCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/TrunkCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/TrunkCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/TrunkCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: eca7fce6fe717489ea30d3027fedb1fd
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
43
Assets/Pixel3D/Materials/Cel/Water.mat
Normal file
43
Assets/Pixel3D/Materials/Cel/Water.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/Water.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/Water.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 79c729ac739a545e2adb975049f6985b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Pixel3D/Materials/Cel/WhiteCel.mat
Normal file
30
Assets/Pixel3D/Materials/Cel/WhiteCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/Cel/WhiteCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/Cel/WhiteCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 14e89df72f0b64b229fdc098212faaae
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Materials/UnCel.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 62ab295510fe846cf82b65d2f71ca5e4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
32
Assets/Pixel3D/Materials/UnCel/GrayUnCel.mat
Normal file
32
Assets/Pixel3D/Materials/UnCel/GrayUnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/GrayUnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/GrayUnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8d7a6fbc1d5a447b7920326cb694b7fb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
31
Assets/Pixel3D/Materials/UnCel/LeafUnCel.mat
Normal file
31
Assets/Pixel3D/Materials/UnCel/LeafUnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/LeafUnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/LeafUnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6b4f17c4792b045f1b5d208769b6e3f4
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
32
Assets/Pixel3D/Materials/UnCel/TerrainUnCel.mat
Normal file
32
Assets/Pixel3D/Materials/UnCel/TerrainUnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/TerrainUnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/TerrainUnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3750536a2d6d54eda8d70e52fa7c9951
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
31
Assets/Pixel3D/Materials/UnCel/TrunkUnCel.mat
Normal file
31
Assets/Pixel3D/Materials/UnCel/TrunkUnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/TrunkUnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/TrunkUnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 194e8c41f005e45ea9bab07b522ded2d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
83
Assets/Pixel3D/Materials/UnCel/UnCel.mat
Normal file
83
Assets/Pixel3D/Materials/UnCel/UnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/UnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/UnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 25dc53e0720fa4e6c931e589658a5b49
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
36
Assets/Pixel3D/Materials/UnCel/WaterUnCel.mat
Normal file
36
Assets/Pixel3D/Materials/UnCel/WaterUnCel.mat
Normal 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: []
|
8
Assets/Pixel3D/Materials/UnCel/WaterUnCel.mat.meta
Normal file
8
Assets/Pixel3D/Materials/UnCel/WaterUnCel.mat.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: dda8ea07fb4884ad695781d5999c8900
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Pixel3D/New Terrain.asset
Normal file
BIN
Assets/Pixel3D/New Terrain.asset
Normal file
Binary file not shown.
8
Assets/Pixel3D/New Terrain.asset.meta
Normal file
8
Assets/Pixel3D/New Terrain.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 34c090b36deb64b919ba6b6bc11eb7e3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 15600000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Objects.meta
Normal file
8
Assets/Pixel3D/Objects.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ae70e6a5b7f274c1081f3baba87d2849
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Pixel3D/Objects/bush.fbx
Normal file
BIN
Assets/Pixel3D/Objects/bush.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/bush.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/bush.fbx.meta
Normal 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:
|
BIN
Assets/Pixel3D/Objects/dead-trees.fbx
Normal file
BIN
Assets/Pixel3D/Objects/dead-trees.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/dead-trees.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/dead-trees.fbx.meta
Normal 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:
|
BIN
Assets/Pixel3D/Objects/icosahedron.fbx
Normal file
BIN
Assets/Pixel3D/Objects/icosahedron.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/icosahedron.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/icosahedron.fbx.meta
Normal 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:
|
BIN
Assets/Pixel3D/Objects/monkey.fbx
Normal file
BIN
Assets/Pixel3D/Objects/monkey.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/monkey.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/monkey.fbx.meta
Normal 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:
|
BIN
Assets/Pixel3D/Objects/rocks.fbx
Normal file
BIN
Assets/Pixel3D/Objects/rocks.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/rocks.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/rocks.fbx.meta
Normal 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:
|
BIN
Assets/Pixel3D/Objects/terrain.fbx
Normal file
BIN
Assets/Pixel3D/Objects/terrain.fbx
Normal file
Binary file not shown.
109
Assets/Pixel3D/Objects/terrain.fbx.meta
Normal file
109
Assets/Pixel3D/Objects/terrain.fbx.meta
Normal 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:
|
9033
Assets/Pixel3D/Objects/trees.obj
Normal file
9033
Assets/Pixel3D/Objects/trees.obj
Normal file
File diff suppressed because it is too large
Load diff
109
Assets/Pixel3D/Objects/trees.obj.meta
Normal file
109
Assets/Pixel3D/Objects/trees.obj.meta
Normal 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:
|
45
Assets/Pixel3D/Pixel 3D Pipeline Asset.asset
Normal file
45
Assets/Pixel3D/Pixel 3D Pipeline Asset.asset
Normal 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}
|
8
Assets/Pixel3D/Pixel 3D Pipeline Asset.asset.meta
Normal file
8
Assets/Pixel3D/Pixel 3D Pipeline Asset.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8e49086ea9dd44b8f9a11dc8e0c505fe
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
53
Assets/Pixel3D/Pixel 3D Post FX Settings.asset
Normal file
53
Assets/Pixel3D/Pixel 3D Post FX Settings.asset
Normal 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
|
8
Assets/Pixel3D/Pixel 3D Post FX Settings.asset.meta
Normal file
8
Assets/Pixel3D/Pixel 3D Post FX Settings.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fb8606802f96c473fb9ff47becbd7b2f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Prefabs.meta
Normal file
8
Assets/Pixel3D/Prefabs.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e6d263c7d9b3549b1857aa8495f3ddf3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
185
Assets/Pixel3D/Prefabs/CameraPivot.prefab
Normal file
185
Assets/Pixel3D/Prefabs/CameraPivot.prefab
Normal 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
|
7
Assets/Pixel3D/Prefabs/CameraPivot.prefab.meta
Normal file
7
Assets/Pixel3D/Prefabs/CameraPivot.prefab.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e948be65be2984fbc9ddf9ace1a7d4d8
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
96
Assets/Pixel3D/Prefabs/DirectionalLight.prefab
Normal file
96
Assets/Pixel3D/Prefabs/DirectionalLight.prefab
Normal 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
|
7
Assets/Pixel3D/Prefabs/DirectionalLight.prefab.meta
Normal file
7
Assets/Pixel3D/Prefabs/DirectionalLight.prefab.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 79972ebbc68a545c383d16456b6a9177
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
83
Assets/Pixel3D/README.md
Normal file
83
Assets/Pixel3D/README.md
Normal 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]
|
7
Assets/Pixel3D/README.md.meta
Normal file
7
Assets/Pixel3D/README.md.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: adef5c5638f43408ba6749be621ff08e
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Scenes.meta
Normal file
8
Assets/Pixel3D/Scenes.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a9a5f4aceea0646ef849b97b6f8a71c5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
3179
Assets/Pixel3D/Scenes/FullScene.unity
Normal file
3179
Assets/Pixel3D/Scenes/FullScene.unity
Normal file
File diff suppressed because one or more lines are too long
7
Assets/Pixel3D/Scenes/FullScene.unity.meta
Normal file
7
Assets/Pixel3D/Scenes/FullScene.unity.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6d0d42069efd844789398b83e676e0cc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Scripts.meta
Normal file
8
Assets/Pixel3D/Scripts.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1a914a60303b94d508b8803b112c7303
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
284
Assets/Pixel3D/Scripts/GrassInstancer.cs
Normal file
284
Assets/Pixel3D/Scripts/GrassInstancer.cs
Normal 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
|
11
Assets/Pixel3D/Scripts/GrassInstancer.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/GrassInstancer.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0f0b6253ae2084750ad5801aa8fd8c18
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
51
Assets/Pixel3D/Scripts/IsometricCameraPivot.cs
Normal file
51
Assets/Pixel3D/Scripts/IsometricCameraPivot.cs
Normal 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);
|
||||
}
|
||||
}
|
11
Assets/Pixel3D/Scripts/IsometricCameraPivot.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/IsometricCameraPivot.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0717b4fb631d34d44a07d1b42a6b73ee
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
192
Assets/Pixel3D/Scripts/LeafInstancer.cs
Normal file
192
Assets/Pixel3D/Scripts/LeafInstancer.cs
Normal 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
|
11
Assets/Pixel3D/Scripts/LeafInstancer.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/LeafInstancer.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 271baf40419394e30b857a667e336d88
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
185
Assets/Pixel3D/Scripts/MeshGenerator.cs
Normal file
185
Assets/Pixel3D/Scripts/MeshGenerator.cs
Normal 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
|
11
Assets/Pixel3D/Scripts/MeshGenerator.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/MeshGenerator.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ff993955589c54d1f980c40c04421832
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
80
Assets/Pixel3D/Scripts/MeshSurfaceSampler.cs
Normal file
80
Assets/Pixel3D/Scripts/MeshSurfaceSampler.cs
Normal 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;
|
||||
}
|
||||
}
|
11
Assets/Pixel3D/Scripts/MeshSurfaceSampler.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/MeshSurfaceSampler.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 99677e4825d094c0eab5be922e28904d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
474
Assets/Pixel3D/Scripts/PostProcesser.cs
Normal file
474
Assets/Pixel3D/Scripts/PostProcesser.cs
Normal 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);
|
||||
// }
|
||||
// }
|
11
Assets/Pixel3D/Scripts/PostProcesser.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/PostProcesser.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5ae31a9a3a3e946d1a6a904b9ab115c4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
17
Assets/Pixel3D/Scripts/Rotator.cs
Normal file
17
Assets/Pixel3D/Scripts/Rotator.cs
Normal 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);
|
||||
}
|
||||
}
|
11
Assets/Pixel3D/Scripts/Rotator.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/Rotator.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2aa0b8e5a118943d3a3dd673af44c3aa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
78
Assets/Pixel3D/Scripts/SceneColorSetup.cs
Normal file
78
Assets/Pixel3D/Scripts/SceneColorSetup.cs
Normal 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
|
||||
}
|
||||
}
|
11
Assets/Pixel3D/Scripts/SceneColorSetup.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/SceneColorSetup.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 885a2b24c00804ed7b6d4990f0849e0e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
Assets/Pixel3D/Scripts/WaterLevelShift.cs
Normal file
21
Assets/Pixel3D/Scripts/WaterLevelShift.cs
Normal 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);
|
||||
}
|
||||
}
|
11
Assets/Pixel3D/Scripts/WaterLevelShift.cs.meta
Normal file
11
Assets/Pixel3D/Scripts/WaterLevelShift.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 869babbd4fd3b4bdbb667ec33cc4c4af
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Pixel3D/Shaders.meta
Normal file
8
Assets/Pixel3D/Shaders.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9b4831c3e29d14ddc990eab2abbbed3c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
147
Assets/Pixel3D/Shaders/Cel.hlsl
Normal file
147
Assets/Pixel3D/Shaders/Cel.hlsl
Normal 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;
|
||||
}
|
7
Assets/Pixel3D/Shaders/Cel.hlsl.meta
Normal file
7
Assets/Pixel3D/Shaders/Cel.hlsl.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4c53fe4732eb54ec9935f558ffd96b23
|
||||
ShaderIncludeImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
50
Assets/Pixel3D/Shaders/Cel.shader
Normal file
50
Assets/Pixel3D/Shaders/Cel.shader
Normal 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"
|
||||
}
|
||||
}
|
9
Assets/Pixel3D/Shaders/Cel.shader.meta
Normal file
9
Assets/Pixel3D/Shaders/Cel.shader.meta
Normal file
|
@ -0,0 +1,9 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6ad1e8d49c3a0400cbbe4426084594c1
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
86
Assets/Pixel3D/Shaders/Clouds.shader
Normal file
86
Assets/Pixel3D/Shaders/Clouds.shader
Normal 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
|
||||
}
|
9
Assets/Pixel3D/Shaders/Clouds.shader.meta
Normal file
9
Assets/Pixel3D/Shaders/Clouds.shader.meta
Normal 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
Loading…
Add table
Add a link
Reference in a new issue