This commit is contained in:
王军 2023-06-30 11:06:47 +08:00
parent b32b5c2f9d
commit b09ed5aa2f
109 changed files with 6483 additions and 26 deletions

View File

@ -25,7 +25,7 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Tex_Marble_SlabWhite2
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _SPECGLOSSMAP
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -78,7 +78,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 2800000, guid: 1923e3cc893838d4b9854b9021e28935, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Tex_D:
@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _Glossiness: 0.501
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -9,7 +9,7 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Tex_Marble_TilesSquare0a
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP
m_ShaderKeywords: _NORMALMAP
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -62,7 +62,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 2800000, guid: eca7c0f583c85414db7db984e6ecdaad, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Tex_D:
@ -147,7 +147,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _Glossiness: 0.506
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -25,7 +25,7 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Tex_Plaster_Plain
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP
m_ShaderKeywords: _NORMALMAP
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 1
@ -78,7 +78,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 2800000, guid: aba30b7103546b34aad978776757699a, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Tex_D:
@ -134,7 +134,7 @@ Material:
- _AlphaToMaskInspectorValue: 0
- _Anisotropy: 0
- _BlendMode: 0
- _BumpScale: 1
- _BumpScale: 0.5
- _CoatMask: 0
- _ConservativeDepthOffsetEnable: 0
- _CullMode: 0
@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _Glossiness: 1
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -25,7 +25,7 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Tex_Wood_GluLamBeam_SideNew
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP
m_ShaderKeywords: _NORMALMAP
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 1
@ -78,7 +78,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 2800000, guid: 1afd64b7a911a5549a6eef2fe5cdd7d7, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Tex_D:
@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _Glossiness: 0.926
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0.261
- _Glossiness: 0.8
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0.261
- _Glossiness: 0.5
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -163,7 +163,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0.261
- _Glossiness: 0.5
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -9,7 +9,7 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: TexturesCom_Vents0021
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _ALPHAPREMULTIPLY_ON
m_ShaderKeywords: _ALPHABLEND_ON
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -218,7 +218,7 @@ Material:
- _Metallic: 0
- _MetallicRemapMax: 1
- _MetallicRemapMin: 0
- _Mode: 3
- _Mode: 2
- _NormalMapSpace: 0
- _NormalScale: 1
- _OcclusionStrength: 1
@ -241,7 +241,7 @@ Material:
- _SpecularAAThreshold: 0.2
- _SpecularHighlights: 1
- _SpecularOcclusionMode: 1
- _SrcBlend: 1
- _SrcBlend: 5
- _StencilRef: 0
- _StencilRefDepth: 0
- _StencilRefGBuffer: 2
@ -277,7 +277,7 @@ Material:
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.51886785, g: 0.51886785, b: 0.51886785, a: 1}
- _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}

View File

@ -198,7 +198,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0.484
- _Glossiness: 0.135
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5
@ -277,7 +277,7 @@ Material:
m_Colors:
- _BaseColor: {r: 0.20689571, g: 0.37144187, b: 0.2598333, a: 0.6}
- _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 0.4134478, g: 0.53773576, b: 0.4519179, a: 0}
- _Color: {r: 0.29436633, g: 0.3301887, b: 0.30556083, a: 0}
- _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}

View File

@ -293,7 +293,7 @@ Material:
m_Colors:
- _BaseColor: {r: 0.37750837, g: 0.56427705, b: 0.43258724, a: 0.9}
- _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 0.50743145, g: 0.5943396, b: 0.5335039, a: 0.9}
- _Color: {r: 0.56585974, g: 0.6415094, b: 0.5888835, a: 0.84313726}
- _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}

View File

@ -147,7 +147,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _Glossiness: 0.627
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -263,7 +263,7 @@ Material:
- _EnableGeometricSpecularAA: 0
- _EnergyConservingSpecularColor: 1
- _GlossMapScale: 1
- _Glossiness: 0.328
- _Glossiness: 0.907
- _GlossyReflections: 1
- _HeightAmplitude: 0.02
- _HeightCenter: 0.5

View File

@ -1,5 +1,42 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-8812053221142558256
MonoBehaviour:
m_ObjectHideFlags: 3
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: 7a34fa72bd4185749832024e9c8010bf, type: 3}
m_Name: ScreenSpaceReflections
m_EditorClassIdentifier:
active: 0
enabled:
overrideState: 1
value: 1
preset:
overrideState: 1
value: 5
maximumIterationCount:
overrideState: 0
value: 16
resolution:
overrideState: 0
value: 0
thickness:
overrideState: 0
value: 8
maximumMarchDistance:
overrideState: 1
value: 100
distanceFade:
overrideState: 1
value: 0.001
vignette:
overrideState: 0
value: 0.5
--- !u!114 &-5088152751173518735
MonoBehaviour:
m_ObjectHideFlags: 3
@ -1421,6 +1458,7 @@ MonoBehaviour:
- {fileID: -2577705183074798555}
- {fileID: -5088152751173518735}
- {fileID: 3711592583115391261}
- {fileID: -8812053221142558256}
--- !u!114 &3711592583115391261
MonoBehaviour:
m_ObjectHideFlags: 3

View File

@ -55,7 +55,7 @@ public class Main : UIBase
//切换视角时相机移动速度
private float camMoveSpeed=6;
//待机时长
private float waitTime=5;
private float waitTime=120;
Tweener t_camAnimAngle;
Tweener t_camAnimPos;

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

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

View File

@ -0,0 +1,20 @@
This asset contains 2 main packages. Please use the appropriate package according to the rendering pipeline of your project:
** Built-in pipeline **
- Import the package from the folder /Builtin.
** Universal Rendering Pipeline **
- Import the package from the folder /URP
Once imported, read the PDF documentation for additional details.
Thanks for using Shiny SSRR.
Questions / Suggestions / Support
---------------------------------
* Website-Forum: https://kronnect.com
* Support: contact@kronnect.com
* Twitter: @Kronnect

View File

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

8
Assets/ShinySSRR.meta Normal file
View File

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

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 271fbc457f4af4a44a2a7ce4705d2df2
folderAsset: yes
timeCreated: 1542876294
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: cb45faf5ebb76442a9c88b4e977fa069
folderAsset: yes
timeCreated: 1542877572
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,119 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-8558442800701317947
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Floor
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _NORMALMAP
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 40351333731c94777b93eda89ce1d4eb, type: 3}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 69735cf47f0104165973f07ff96d4d98, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 10, y: 10}
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: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 40351333731c94777b93eda89ce1d4eb, type: 3}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Occlusion:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 2800000, guid: 943181a31ab5a411496dc4b0d6a41630, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _AlphaTestRef: 0.5
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 0.02
- _DstBlend: 0
- _EmissionScaleUI: 1
- _EnvironmentReflections: 1
- _GlossMapScale: 0.538
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Lightmapping: 1
- _Metallic: 0.111
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.0104
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.499
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0.99999994}
- _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}
- _SpecularColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1}

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: c5e68f4db72684d25be883ee27d7fa97
NativeFormatImporter:
userData:
assetBundleName:

View File

@ -0,0 +1,119 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-5610605729892836785
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Gold
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 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}
- _Occlusion:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _AlphaTestRef: 0.5
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EmissionScaleUI: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.9
- _GlossyReflections: 1
- _Lightmapping: 1
- _Metallic: 1
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.908
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.96078426, g: 0.8392157, b: 0.47450978, a: 1}
- _Color: {r: 0.9607843, g: 0.8392157, b: 0.4745098, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _SpecularColor: {r: 0.8088235, g: 0.6295969, b: 0.3033088, a: 1}

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 5096e016b7e68464899a979f01e98542
NativeFormatImporter:
userData:
assetBundleName:

View File

@ -0,0 +1,109 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Mirror
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 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}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 1
- _GlossyReflections: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 1
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
--- !u!114 &5106466146314827787
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2

View File

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

View File

@ -0,0 +1,119 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-2992342339722848979
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: PlasticGlossy
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 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}
- _Occlusion:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _AlphaTestRef: 0.5
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EmissionScaleUI: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.633
- _GlossyReflections: 1
- _Lightmapping: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.8
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0, g: 0.78942597, b: 0.79607844, a: 1}
- _Color: {r: 0, g: 0.78942597, b: 0.79607844, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _SpecularColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 1f83895e6354f411da22ab491b664095
NativeFormatImporter:
userData:
assetBundleName:

File diff suppressed because one or more lines are too long

View File

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

View File

@ -0,0 +1,109 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3129266592905315525
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ShinyText
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _RECEIVE_SHADOWS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 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}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 0
- _Smoothness: 0
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}

View File

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

View File

@ -0,0 +1,119 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Silk
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 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}
- _Occlusion:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _AlphaTestRef: 0.5
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EmissionScaleUI: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.7
- _GlossyReflections: 1
- _Lightmapping: 1
- _Metallic: 0.75
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.6
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.49411762, g: 0.14509797, b: 0.16470581, a: 1}
- _Color: {r: 0.49411765, g: 0.14509805, b: 0.16470589, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _SpecularColor: {r: 0.74264705, g: 0.20750435, b: 0.216731, a: 1}
--- !u!114 &7254247028269435741
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: cc0954b3a33054342b0fd89feda97068
NativeFormatImporter:
userData:
assetBundleName:

View File

@ -0,0 +1,119 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-6803998695329737601
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Wall
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _NORMALMAP _OCCLUSIONMAP
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 9d4329142f9cd482983a58ac599786dd, type: 3}
m_Scale: {x: 3, y: 3}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: fd639c096a8584af0b7b70577421b9a1, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 10, y: 10}
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: 3, y: 3}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 9d4329142f9cd482983a58ac599786dd, type: 3}
m_Scale: {x: 3, y: 3}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Occlusion:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 2800000, guid: 4eef545667c58495ea824bd3998da006, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 2800000, guid: a1d43acc22aa4427f89ca56382ce5272, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _AlphaClip: 0
- _AlphaTestRef: 0.5
- _Blend: 0
- _BumpScale: 1
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 0.02
- _DstBlend: 0
- _EmissionScaleUI: 1
- _EnvironmentReflections: 1
- _GlossMapScale: 0.325
- _Glossiness: 0.311
- _GlossyReflections: 1
- _Lightmapping: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.0203
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.311
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0.99999994}
- _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1}
- _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}
- _SpecularColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1}

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: c756ee1000105437892bd5901771ff7b
NativeFormatImporter:
userData:
assetBundleName:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 6f71b213fc61141bd8073cd41403bdf7
timeCreated: 1542877475
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,16 @@
using UnityEngine;
namespace ShinySSRR {
public class Rotate : MonoBehaviour {
public Vector3 axis = Vector3.up;
public float speed = 60f;
void Update() {
transform.Rotate(axis * (Time.deltaTime * speed));
}
}
}

View File

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

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 9030b1a978d064cad96fc5af58408379
folderAsset: yes
timeCreated: 1542901861
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 40351333731c94777b93eda89ce1d4eb
timeCreated: 1542918613
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 69735cf47f0104165973f07ff96d4d98
timeCreated: 1542918925
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 4eef545667c58495ea824bd3998da006
timeCreated: 1542918613
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: fd639c096a8584af0b7b70577421b9a1
timeCreated: 1542918741
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View File

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 9d4329142f9cd482983a58ac599786dd
timeCreated: 1542918615
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,183 @@
USER GUIDE
1
Contents
Introduction ............................................................................................................................................3
Setup ......................................................................................................................................................3
Requirements ..................................................................................................................................................................... 3
Configuration .....................................................................................................................................................................3
Demo Scene .......................................................................................................................................................................3
How to add reflections to your scenes ......................................................................................................4
Forward rendering configuration ......................................................................................................................................4
Why is necessary to add a Reflections script on the objects? .......................................................................................5
Deferred rendering configuration .....................................................................................................................................5
Global settings ...................................................................................................................................................................6
General settings.............................................................................................................................................................6
Raytracing settings........................................................................................................................................................6
Reflection Intensity ........................................................................................................................................................7
Reflection Sharpness..........................................................................................................................................................7
Support...................................................................................................................................................7
2
Introduction
Thank you for purchasing!
Shiny SSRR means Screen Space Raytraced Reflections.
Reflections add a realistic touch to many surfaces. Use them wisely and in a subtle way to improve the quality
of your scenes.
This is a camera effect which has benefits and limitations:
- Benefits: its very fast and independent of scene complexity.
- Limitations: only visible objects can render reflections on the scene.
Setup
Requirements
▪ Unity 2019.4 LTS
▪ Forward or deferred rendering path.
▪ Windows / Mac desktop platforms.
Configuration
1) Make sure your project meets the above requirements.
2) Import Shiny SSRR asset into your project.
3) Add Shiny SSRR to your camera.
Demo Scene
If everything is properly setup, you should be able to see the reflections in the included demo scene.
3
How to add reflections to your scenes
Shiny SSRR can be run in forward or deferred mode depending on your camera rendering path setting.
In forward, in addition to add Shiny SSRR to your camera, you need to add a Reflections script to any object
or group of objects that will receive reflections. Each group of objects can use different settings bringing lot
of flexibility.
In deferred, only global settings on the camera script (Shiny SSRR script) are used and Reflections scripts are
ignored because Shiny SSRR will work with the g-buffers which are independent of the scene geometry.
Forward rendering configuration
In this mode, add the Reflections script to any game object that you want to receive reflections. A single
Reflections script can cover many game objects thanks to the “Scope” options shown in the inspector below:
When you add this script to the game object, it will start receiving reflections (assuming you have the
Screen Space Reflections render feature correctly installed as described in the previous page).
The rest of options are:
- Ignore: enable this option to exclude this game object from getting any reflection. This is useful if
you assign the Reflections script to the root of a group of objects, but you dont want reflections on
some of them.
- Scope: in addition to add reflections to this object, you can specify that reflections should also be
added to the children of the object. And you can also specify some filters, like the layer, a name
pattern or specific sub-meshes.
- Use Material Smoothness: if the game object uses a PBR material with _Smoothness property, the
asset can use that value so changing the smoothness of the material will affect the reflections as well.
- Per Sub Mesh Smoothness: let you specify a different smoothness value per submesh.
- Smothness: if the “Use Material Smoothness” is not enabled or the material doesnt have a
smoothness property, this value will be used instead.
- Use Material Normal Map: if the game object uses a material with a normal map, use it. If the
material has no normal texture, this option will be ignored.
- Material Property Names: this are the default names for usual smoothness map textures, normal
map and smoothness intensity values used in standard shader. Feel free to specify custom shader
4
property names if required. The smoothness value is encoded in the alpha channel of the smoothness
map so make sure that texture preserves the alpha value in Import settings.
- Override Global Settings: let you use different raytracing settings only for this object.
Hint: in forward rendering mode, you can also customize the reflection intensity modifying the alpha
value of the color of that material.
Why is necessary to add a Reflections script on the objects?
Because forward renderer doesnt store (by default) normals and smoothness into a dedicated buffer which
are required to compute reflections. The asset needs to compute the normal per object in order to produce
correct reflections. In deferred rendering path, Shiny SSRR can leverage the g-buffers to automate the effect
on the entire scene without requiring you to add the Reflections scripts.
However, theres a bonus for using this method: by adding and customizing Reflections per group of objects
you have total control of how the effect renders on the screen. In order to make this process faster, therere
global settings that are automatically applied to all reflections (see next section).
Also, because youre specifying which objects will require reflections, the overall result can render faster
because the system doesnt need to process the entire screen only those pixels of the objects that will
receive reflections.
Deferred rendering configuration
If your camera is set to deferred rendering path, Shiny SSRR will detect this and automatically work in that
mode.
Benefits of deferred include a unified approach to reflections and more physically based results since
smoothness is read per pixel. Also, you dont need to add the Reflections script to the objects that will receive
reflections.
On the other hand, you lose a bit of flexibility since you can no longer customize the raytracing settings per
object but globally. This can be tricky as sometimes you prefer to use less or more samples or different decay
or jitter settings for example. Also, because deferred applies to entire screen, it can be a bit more expensive.
5
Global settings
The global settings are located in the Shiny SSRR render feature itself and provide options that affect all
reflections. These settings are shown in the screenshot below:
General settings
- Show In Scene View: this option allows you to disable reflections while working in the SceneView.
- Downsampling: applies the effect to a reduced size image buffer improving performance in exchange
of accuracy/quality. Depth Bias is used to clip reflections by depth buffer so objects on top of others
do not get reflections. The Depth Bias parameter is used only when downsampling is greater than 1
and only if camera is rendering in forward rendering path.
- Output Mode: let you debug the result or show a side-by-side comparison between the original
image and the image with reflections.
- Low Precision: uses LDR buffer (ARGB32) instead of HDR (ARGBhalf) buffer for reflection buffers.
Raytracing settings
- Sample Count: the number of steps used in the raytracer. The more samples, the more quality and
extensive the reflections result.
- Max Ray Length: the maximum distance of reflections.
- Thickness: when the ray passes behind an object, it needs to figure if its hitting the object or passing
behind it. Since the back faces of objects are not rendered, the asset uses a fixed value. Increase this
value to ensure all reflections are captured.
- Binary Search Iterations: increase to refine the hit position detected by the raytracer. Usually a value
of 6 or 8 is enough in most situations.
- Thickness Fine: when this option is enabled, after the binary search has refined the reflection hit
position, the algorithm will discard the reflection hit if the distance from the ray to the surface is
greater than this value. Therefore, this is the actual thickness value used after binary search. Keep it
as low as possible as long as reflections look bright and sharp.
- Jitter: reduces banding artefacts by adding a random offset to the starting position of the rays.
- Animated jitter: this option changes the jitter amount per pixel every frame redistributing the noise.
6
Reflection Intensity
- Global Multiplier: this is a global multiplier to all reflections intensity and let you tune down the
effect globally.
- Min Intensity: determines the minimum reflection intensity on all surfaces. Can be used to force a
very shiny environment.
- Max Intensity: caps the maximum reflection intensity on any surface.
- Fresnel: this setting reduces the reflection intensity based on the view angle to the surface. A value
of 1 gives more realistic results.
- Decay: this setting reduces the reflection intensity based on the distance to the reflected point.
- Specular Control: reduces intensity of specular in the reflections. This will produce less
flickering/shimmering in the scene caused by certain materials.
- Vignette Size: reflections are tuned down around the screen borders. This setting controls the
intensity of this reduction.
Reflection Sharpness
- Fuzzyness: a blur multiplier which is also based on the distance to the reflected point so distant
reflections look blurrier than contact reflections.
- Contact Hardening: increases the sharpness of contact (short distance) reflections.
- Minimum Blur: defines the minimum blur intensity for all reflections.
- Blur Downsampling: size of the blur buffers. Increasing only if you want to improve performance a
bit.
- Blur Strength: let you control the blur spread along the x and y axis.
Support
We hope you find the asset easy and fun to use. Feel free to contact us for any enquiry.
Visit our Support Forum on https://kronnect.com for help and access to the latest beta releases.
Kronnect Technologies
Email: contact@kronnect.com
Support Forum: https://www.kronnect.com/support
7

View File

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

View File

@ -0,0 +1,263 @@
Dont miss these other cool assets brought to you by
BEAUTIFY 2 is an acclaimed full-screen image processing effect that improves the image quality in real time
producing incredibly crisp and vivid scenes. Compatible with built-in, LWRP and URP pipelines.
In addition to this unique image enhancement filter, you will find in Beautify additional effects like high quality Bloom,
dirty lens effect, vignetting, night & thermal vision and more!
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/beautify-2-advanced-post-processing-163949?aid=1101lGsd
DYNAMIC FOG & MIST 2 is a full-screen image effect that adds live, moving Fog, Mist and Sky Haze to your scenes
making them less dull and boring. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/dynamic-fog-mist-48200?aid=1101lGsd
VOLUMETRIC FOG & MIST 2 is the enhanced version of Dynamic Fog & Mist (which is also included in the package)
and has been designed to provide a better-looking fog and cloud formations with support of lighting and glow effects.
Compatible with built-in and URP pipelines.
Its feature-rich with options like fog of war, Sun tracking, better transparent and sprite support, sun shafts and more.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/volumetric-fog-mist-2-162694?aid=1101lGsd
WORLD POLITICAL MAP SERIES is a collection of professional mapping assets for Unity (2D and Globe Editions). Used by
many companies and agencies across the world to visualize data, resources, interact with the user, etc.
Compatible with built-in and URP pipelines.
Get it on the Asset Store (Globe Edition):
https://assetstore.unity.com/packages/tools/gui/world-map-globe-edition-2-150643?aid=1101lGsd
Get it on the Asset Store (2D Edition):
https://assetstore.unity.com/packages/tools/gui/world-map-2d-edition-2-151238?aid=1101lGsd
WORLD MAP STRATEGY KIT 2 is a complete framework for building AAA strategy games, including all world countries
and provinces, +7000 cities, cool 3D PBS dynamic viewport for map, hexagonal grid, pathfinding, real elevation, and much
more.
Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/game-toolkits/world-map-strategy-kit-2-150938?aid=1101lGsd
WORLD MAPS PRO BUNDLE 2 is our most complete and professional suite of maps for Unity platform for the best price.
Compatible with built-in and URP pipelines. This bundle contains:
- World Political Map Globe Edition
- World Political Map 2D Edition
- World Map Strategy Kit
- World Flags and Weather Icons
Purchase this bundle and save $$$!
https://assetstore.unity.com/packages/tools/gui/world-maps-pro-bundle-2-151240?aid=1101lGsd
SHINY SSRR is our Screen Space Raytraced Reflections solution optimized for both forward and deferred rendering
path. As with Beautify, this effect gives an instant boost to your scene by making light bounce on shiny surfaces, casting
gorgeous reflections on all kind of reflective surfaces. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/slug/188638?aid=1101lGsd
SKYBOX PLUS is an artist-driven replacement for Unity default skybox. Includes a lovely blend of procedural haze and
hand-drawn clouds which mimic the style of Studio Ghibli.
Supports full day/night transition with moon, stars, several cloud layers with custom animation and lot of customization
options. . Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/2d/textures-materials/sky/skybox-plus-182966?aid=1101lGsd
VOLUMETRIC LIGHTS is a powerful asset to add scattering effect to any number of Unity lights. Supports spot, point
and area light types. Directional lights are also supported for localized areas. Includes advanced options like dust lit
particles and shadow occlusion. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/volumetric-lights-164149?aid=1101lGsd
COMPASS NAVIGATOR PRO adds a “Skyrim”-like compass bar to your UI, including smooth fade in/out, various bar
designs, +11 icons in two variations (+22 icons) and nice features like minimap and beam lights!
Compatible with all render pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/gui/compass-navigator-pro-59519?aid=1101lGsd
X-FRAME FPS ACCELERATOR provides you extra frames per second in your mobile games (iOS and Android). It takes
advantage of the huge screen resolution of these devices to sacrifice some pixels in Exchange of performance with flexible
and dynamic quality options. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/camera/x-frame-fps-accelerator-63965?aid=1101lGsd
SHADER CONTROL is a tiny but powerful tool that will allow you to identify and manage shader keywords usage in your
project, taking more control over the build size and compilation time. Compatible with all render pipelines.
Quickly locates and helps you disable keywords not needed, learn about the shaders used in your project and their keywords!
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/shader-control-74817?aid=1101lGsd
TERRAIN GRID SYSTEM is an advanced grid generator and territory/cell highlighter/fader for both Terrain and 2D grids.
Compatible with all render pipelines. It can generate Voronoi, hexagonal and boxed grids dynamically on your terrain, with
flexible position options . Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/terrain/terrain-grid-system-47215?aid=1101lGsd
GRIDS 2D is similar to Terrain Grid System but only for flat 2D grids. Its fast, convenient and easy to use.
Compatible with all render pipelines. It can also generate Voronoi, hexagonal and boxed grids dynamically on your terrain, with
flexible API to integrate with your game. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/sprite-management/grids-2d-59981?aid=1101lGsd
HEXASPHERE GRID SYSTEM leverages shader technologies like texture arrays and geometry shaders to render hundreds
of thousands of interactive and customizable tiles in a spherical/hexagonal grid.
Fully interactive, with VR support and super-fast. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/modeling/hexasphere-grid-system-89112?aid=1101lGsd
TUNNEL FX 2 is a full-screen post image effect that creates stunning, colorful 3D animated tunnels. It does not create any
real tunnel but just draw the tunnel as a post-effect behind any geometry or UI.
Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/particles-effects/tunnel-fx-2-86544?aid=1101lGsd
GLOBAL SNOW renders your existing scene into a winter landscape with a couple of clicks. Just add a single script to your
camera and customize the results.
Supports relief mapping for realistic snow effect + human footprints + terrain marks with automatic collision detection and
more!
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/global-snow-79795?aid=1101lGsd
HIGHLIGHT PLUS adds outline, glow and see-through effects to any 3D object in the scene.
Its performant and designed for all platforms, including built-in and URP rendering pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/particles-effects/highlight-plus-134149?aid=1101lGsd
VOXEL PLAY 2 is a procedural, fast environment based on cubes. It leverages highly optimized code, including
geometry shaders and texture arrays, to generate beautiful, rich, vast infinite worlds which can be customized and
modified in many ways. Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/game-toolkits/voxel-play-2-201234?aid=1101lGsd
PIRATES OF VOXEL PLAY is a multiplayer game template built with Mirror and Voxel Play. Its the perfect
sample project to learn how to implement multiplayer games using these two frameworks.
Includes animated characters, a fully populated tropical island with 3 biomes, wild beasts, weapons, loots, cute
music and sound effects and of course plenty of commented code, documentation and video tutorials!
Get it on the Asset Store:
https://assetstore.unity.com/packages/slug/189096?aid=1101lGsd
LIQUID VOLUME is a powerful and highly customizable shader that simulates realistic and animated liquid
containers. Can be used in 3D scenes and 2D UI (demos included).
Liquid Volume is super easy and fun to use: just add the main script to any primitive (sphere, box, cylinder and
similar shape models) to convert it into a liquid container!
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/liquid-volume-70992?aid=1101lGsd
LIQUID VOLUME PRO 2 includes all features of Liquid Volume and adds additional advanced options plus
improved compatibility with more platforms.
Among the new options are multiple liquid layers support, miscible liquids, bubbles, better mesh options and full
WebGL support! Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/liquid-volume-pro-129967?aid=1101lGsd
HIGHLIGHT PLUS 2D adds outline, glow, see-through and other effects to any sprite in the scene.
Its performant and designed for all platforms, including standard and URP rendering pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/particles-effects/highlight-plus-2d-138383?aid=1101lGsd
TRAILS FX renders smooth, mesmerizing trails behind moving objects and characters.
Its performant thanks to the use of GPU instancing and use correct transparency order producing a fascinating effect.
Compatible with built-in and URP pipelines.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/particles-effects/trails-fx-146898?aid=1101lGsd
COLOR STUDIO is an Editor Extension that allows you to create awesome color palettes and recolor objects, sprites and scenes
easily in editor and runtime. Compatible with all render pipelines.
It comes with an interactive color wheel editor and a complete set of tools that let you also export color palettes as LUTs,
transform existing textures or specific colors from object materials.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/painting/color-studio-151892?aid=1101lGsd
LUT PACK is a collection of +200 cinematic and artistic LUTs plus tints for Beautify. They can dramatically change the mood
and look of your game scenes. Beautify includes a LUT Browser that let you quickly text each one of the included LUT in this
package.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/lut-pack-for-beautify-202502?aid=1101lGsd
FRAME PACK is a collection of +75 film mattes and artistic borders that can be used with Beautify or Unity UI. This p
Get it on the Asset Store:
https://assetstore.unity.com/packages/2d/gui/frame-pack-204058?aid=1101lGsd
MILITARY UNITS THE STYLIZED ART COLLECTION includes +100 hand-painted, stylized portraits of military units
from ancient warriors to modern ships and aircraft. Great for decorating your game screens, unit sheets, icons, or prototyping.
Get it on the Asset Store:
https://assetstore.unity.com/packages/2d/textures-materials/military-units-the-stylized-art-collection-
187769?aid=1101lGsd
Luma Based Ambient Occlusion is a full-screen image effect that simulates occlusion based solely on color
information.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/luma-based-ambient-occlusion-ssao-2d-
93013?aid=1101lGsd
RPG Starter Bundle includes a collection of visual, environment effects, navigation tools and assets to quickly build the
foundation of a RPG/Fantasy game or prototype. Save 50% purchasing this bundle (total value: $150)! This package
features the following assets: Compass Navigator Pro, Skybox Plus, Dynamic Fog % Mist, Tunnel FX 2, Liquid Volume
Get it on the Asset Store:
https://assetstore.unity.com/packages/templates/packs/rpg-starter-bundle-213822?aid=1101lGsd
Beautify HDRP is a post processing effect created for High Definition Rendering Pipeline that improves the image
quality in real time producing incredibly crisp and vivid scenes.
Get it on the Asset Store:
https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/beautify-hdrp-165411?aid=1101lGsd
Potions & Volumetric Liquid contains 8 unique (16 variations), high detailed, PBR set of magic potions with
advanced volumetric effect for the liquids inside the flasks.
This asset uses Liquid Volume Pro to render the liquids and its effects (Liquid Volume Pro license is included with this
asset).
Get it on the Asset Store:
https://assetstore.unity.com/packages/3d/props/potions-volumetric-liquid-221221?aid=1101lGsd
Split Screen Pro is a camera composing system that enables automatic screen split between two targets or players.
This asset can automatically detect when the two targets are far from each other and show a dynamic split line which
separates and adapts the view in two halves, one per each target or player.
Get it on the Asset Store:
https://assetstore.unity.com/packages/tools/camera/split-screen-pro-207149?aid=1101lGsd

View File

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

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 067274d47684a48ca896bde6de6ea9be
folderAsset: yes
timeCreated: 1542886534
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,177 @@
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
namespace ShinySSRR {
[CustomEditor(typeof(Reflections))]
public class ReflectionsEditor : Editor {
SerializedProperty ignore, scope, layerMask, nameFilter, subMeshMask;
SerializedProperty smoothness, perSubMeshSmoothness, subMeshSettings;
SerializedProperty useMaterialSmoothness, materialSmoothnessMapPropertyName, materialSmoothnessIntensityPropertyName;
SerializedProperty useMaterialNormalMap, materialNormalMapPropertyName;
SerializedProperty fresnel, fuzzyness, contactHardening;
SerializedProperty overrideGlobalSettings;
SerializedProperty sampleCount, maxRayLength, thickness, binarySearchIterations, refineThickness, thicknessFine, decay, jitter;
ShinySSRR shiny;
private void OnEnable() {
ignore = serializedObject.FindProperty("ignore");
scope = serializedObject.FindProperty("scope");
layerMask = serializedObject.FindProperty("layerMask");
nameFilter = serializedObject.FindProperty("nameFilter");
subMeshMask = serializedObject.FindProperty("subMeshMask");
smoothness = serializedObject.FindProperty("smoothness");
useMaterialSmoothness = serializedObject.FindProperty("useMaterialSmoothness");
materialSmoothnessMapPropertyName = serializedObject.FindProperty("materialSmoothnessMapPropertyName");
materialSmoothnessIntensityPropertyName = serializedObject.FindProperty("materialSmoothnessIntensityPropertyName");
perSubMeshSmoothness = serializedObject.FindProperty("perSubMeshSmoothness");
subMeshSettings = serializedObject.FindProperty("subMeshSettings");
useMaterialNormalMap = serializedObject.FindProperty("useMaterialNormalMap");
materialNormalMapPropertyName = serializedObject.FindProperty("materialNormalMapPropertyName");
fresnel = serializedObject.FindProperty("fresnel");
fuzzyness = serializedObject.FindProperty("fuzzyness");
contactHardening = serializedObject.FindProperty("contactHardening");
overrideGlobalSettings = serializedObject.FindProperty("overrideGlobalSettings");
sampleCount = serializedObject.FindProperty("sampleCount");
maxRayLength = serializedObject.FindProperty("maxRayLength");
binarySearchIterations = serializedObject.FindProperty("binarySearchIterations");
thickness = serializedObject.FindProperty("thickness");
refineThickness = serializedObject.FindProperty("refineThickness");
thicknessFine = serializedObject.FindProperty("thicknessFine");
decay = serializedObject.FindProperty("decay");
jitter = serializedObject.FindProperty("jitter");
}
public override void OnInspectorGUI() {
if (shiny == null) {
shiny = FindObjectOfType<ShinySSRR>();
}
if (shiny == null) {
EditorGUILayout.HelpBox("Shiny SSRR must be added to the camera!", MessageType.Error);
EditorGUILayout.Separator();
GUI.enabled = false;
} else {
EditorGUILayout.BeginVertical(GUI.skin.box);
if (GUILayout.Button("Show Global Settings")) {
Selection.SetActiveObjectWithContext(shiny.gameObject, null);
GUIUtility.ExitGUI();
}
EditorGUILayout.EndVertical();
}
bool isForwardPath = true;
if (shiny.isDeferredActive) {
EditorGUILayout.HelpBox("In deferred mode, material properties like smoothness and normal map plus global SSR settings are used.", MessageType.Warning);
isForwardPath = false;
GUI.enabled = false;
}
// ensure submesh array size matches materials count
Reflections refl = (Reflections)target;
if (refl.ssrRenderers != null && refl.ssrRenderers.Count == 1 && refl.ssrRenderers[0].originalMaterials != null) {
List<Material> materials = refl.ssrRenderers[0].originalMaterials;
if (refl.subMeshSettings == null) {
refl.subMeshSettings = new SubMeshSettingsData[materials.Count];
} else if (refl.subMeshSettings.Length < materials.Count) {
System.Array.Resize(ref refl.subMeshSettings, materials.Count);
}
}
serializedObject.Update();
EditorGUILayout.PropertyField(ignore);
if (!ignore.boolValue) {
if (refl.renderers?.Count == 0) {
if (scope.intValue == (int)Scope.OnlyThisObject) {
EditorGUILayout.HelpBox("No renderers found on this gameobject. Switch to 'Include Children' or add this script to another object which contains a renderer.", MessageType.Warning);
} else {
EditorGUILayout.HelpBox("No renderers found under this gameobject.", MessageType.Warning);
}
}
EditorGUILayout.PropertyField(scope);
if (scope.intValue == (int)Scope.IncludeChildren) {
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(layerMask);
EditorGUILayout.PropertyField(nameFilter);
EditorGUILayout.PropertyField(subMeshMask);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(useMaterialSmoothness);
GUI.enabled = !useMaterialSmoothness.boolValue;
EditorGUILayout.PropertyField(perSubMeshSmoothness);
if (perSubMeshSmoothness.boolValue) {
EditorGUILayout.PropertyField(subMeshSettings, new GUIContent("Smoothness Values"), true);
} else {
EditorGUILayout.PropertyField(smoothness);
}
GUI.enabled = isForwardPath;
EditorGUILayout.PropertyField(useMaterialNormalMap);
if (useMaterialSmoothness.boolValue || perSubMeshSmoothness.boolValue || useMaterialNormalMap.boolValue) {
EditorGUILayout.Separator();
EditorGUILayout.LabelField("Material Property Names", EditorStyles.miniBoldLabel);
if (useMaterialSmoothness.boolValue || perSubMeshSmoothness.boolValue) {
EditorGUILayout.PropertyField(materialSmoothnessMapPropertyName, new GUIContent("Smoothness Map", "The material property name for the smoothness map"));
EditorGUILayout.PropertyField(materialSmoothnessIntensityPropertyName, new GUIContent("Smoothness Intensity", "The material property name for the smoothness intensity"));
}
if (useMaterialNormalMap.boolValue) {
EditorGUILayout.PropertyField(materialNormalMapPropertyName, new GUIContent("NormalMap", "The material property name for the normal map"));
}
}
EditorGUILayout.PropertyField(overrideGlobalSettings);
if (overrideGlobalSettings.boolValue) {
EditorGUI.indentLevel++;
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Apply Quality Preset:", GUILayout.Width(EditorGUIUtility.labelWidth));
if (GUILayout.Button("Fast")) {
ApplyRaytracingPreset(RaytracingPreset.Fast);
}
if (GUILayout.Button("Medium")) {
ApplyRaytracingPreset(RaytracingPreset.Medium);
}
if (GUILayout.Button("High")) {
ApplyRaytracingPreset(RaytracingPreset.High);
}
if (GUILayout.Button("Superb")) {
ApplyRaytracingPreset(RaytracingPreset.Superb);
}
if (GUILayout.Button("Ultra")) {
ApplyRaytracingPreset(RaytracingPreset.Ultra);
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.PropertyField(sampleCount);
EditorGUILayout.PropertyField(maxRayLength);
EditorGUILayout.PropertyField(thickness);
EditorGUILayout.PropertyField(binarySearchIterations);
EditorGUILayout.PropertyField(refineThickness);
if (refineThickness.boolValue) {
EditorGUILayout.PropertyField(thicknessFine);
}
EditorGUILayout.PropertyField(jitter);
EditorGUILayout.PropertyField(fresnel);
EditorGUILayout.PropertyField(decay);
EditorGUILayout.PropertyField(fuzzyness, new GUIContent("Fuzziness"));
EditorGUILayout.PropertyField(contactHardening);
EditorGUI.indentLevel--;
}
}
serializedObject.ApplyModifiedProperties();
}
void ApplyRaytracingPreset(RaytracingPreset preset) {
Reflections ssr = (Reflections)target;
ssr.ApplyRaytracingPreset(preset);
EditorUtility.SetDirty(ssr);
}
}
}

View File

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

View File

@ -0,0 +1,182 @@
using UnityEngine;
using UnityEditor;
namespace ShinySSRR {
[CustomEditor(typeof(ShinySSRR))]
public class RenderFeatureEditor : Editor {
SerializedProperty showInSceneView;
SerializedProperty smoothnessThreshold, reflectionsMultiplier, reflectionsMinIntensity, reflectionsMaxIntensity;
SerializedProperty downsampling, depthBias, outputMode, separationPos, lowPrecision, stopNaN;
SerializedProperty sampleCount, maxRayLength, thickness, binarySearchIterations, refineThickness, thicknessFine, decay, jitter, animatedJitter;
SerializedProperty fresnel, fuzzyness, contactHardening, minimumBlur;
SerializedProperty blurDownsampling, blurStrength, specularControl, specularSoftenPower, vignetteSize;
Reflections[] reflections;
public Texture bulbOnIcon, bulbOffIcon, deleteIcon, arrowRight;
private void OnEnable() {
showInSceneView = serializedObject.FindProperty("showInSceneView");
smoothnessThreshold = serializedObject.FindProperty("smoothnessThreshold");
reflectionsMultiplier = serializedObject.FindProperty("reflectionsMultiplier");
reflectionsMinIntensity = serializedObject.FindProperty("reflectionsMinIntensity");
reflectionsMaxIntensity = serializedObject.FindProperty("reflectionsMaxIntensity");
downsampling = serializedObject.FindProperty("downsampling");
depthBias = serializedObject.FindProperty("depthBias");
outputMode = serializedObject.FindProperty("outputMode");
separationPos = serializedObject.FindProperty("separationPos");
lowPrecision = serializedObject.FindProperty("lowPrecision");
stopNaN = serializedObject.FindProperty("stopNaN");
sampleCount = serializedObject.FindProperty("sampleCount");
maxRayLength = serializedObject.FindProperty("maxRayLength");
binarySearchIterations = serializedObject.FindProperty("binarySearchIterations");
thickness = serializedObject.FindProperty("thickness");
thicknessFine = serializedObject.FindProperty("thicknessFine");
refineThickness = serializedObject.FindProperty("refineThickness");
decay = serializedObject.FindProperty("decay");
fresnel = serializedObject.FindProperty("fresnel");
fuzzyness = serializedObject.FindProperty("fuzzyness");
contactHardening = serializedObject.FindProperty("contactHardening");
minimumBlur = serializedObject.FindProperty("minimumBlur");
jitter = serializedObject.FindProperty("jitter");
animatedJitter = serializedObject.FindProperty("animatedJitter");
blurDownsampling = serializedObject.FindProperty("blurDownsampling");
blurStrength = serializedObject.FindProperty("blurStrength");
specularControl = serializedObject.FindProperty("specularControl");
specularSoftenPower = serializedObject.FindProperty("specularSoftenPower");
vignetteSize = serializedObject.FindProperty("vignetteSize");
#if UNITY_2020_1_OR_NEWER
reflections = FindObjectsOfType<Reflections>(true);
#else
reflections = FindObjectsOfType<Reflections>();
#endif
}
public override void OnInspectorGUI() {
ShinySSRR shiny = (ShinySSRR)target;
int reflectionsCount = reflections != null ? reflections.Length : 0;
serializedObject.Update();
EditorGUILayout.PropertyField(showInSceneView);
EditorGUILayout.PropertyField(downsampling);
if (downsampling.intValue > 1 && !shiny.isDeferredActive) {
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(depthBias);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(outputMode);
if (outputMode.intValue == (int)OutputMode.SideBySideComparison) {
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(separationPos);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(lowPrecision);
EditorGUILayout.PropertyField(stopNaN, new GUIContent("Stop NaN"));
EditorGUILayout.Separator();
EditorGUILayout.LabelField("Raytracing Settings", EditorStyles.boldLabel);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Apply Quality Preset:", GUILayout.Width(EditorGUIUtility.labelWidth));
ShinySSRR ssr = (ShinySSRR)target;
if (GUILayout.Button("Fast")) {
ssr.ApplyRaytracingPreset(RaytracingPreset.Fast);
}
if (GUILayout.Button("Medium")) {
ssr.ApplyRaytracingPreset(RaytracingPreset.Medium);
}
if (GUILayout.Button("High")) {
ssr.ApplyRaytracingPreset(RaytracingPreset.High);
}
if (GUILayout.Button("Superb")) {
ssr.ApplyRaytracingPreset(RaytracingPreset.Superb);
}
if (GUILayout.Button("Ultra")) {
ssr.ApplyRaytracingPreset(RaytracingPreset.Ultra);
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.PropertyField(sampleCount);
EditorGUILayout.PropertyField(maxRayLength);
EditorGUILayout.PropertyField(thickness);
EditorGUILayout.PropertyField(binarySearchIterations);
EditorGUILayout.PropertyField(refineThickness);
if (refineThickness.boolValue) {
EditorGUILayout.PropertyField(thicknessFine);
}
EditorGUILayout.PropertyField(jitter);
EditorGUILayout.PropertyField(animatedJitter);
EditorGUILayout.PropertyField(smoothnessThreshold, new GUIContent("Smoothness Threshold", "Minimum smoothness to receive reflections"));
EditorGUILayout.PropertyField(reflectionsMultiplier, new GUIContent("Global Multiplier"));
EditorGUILayout.PropertyField(reflectionsMinIntensity, new GUIContent("Min Intensity"));
EditorGUILayout.PropertyField(reflectionsMaxIntensity, new GUIContent("Max Intensity"));
EditorGUILayout.PropertyField(fresnel);
EditorGUILayout.PropertyField(decay);
EditorGUILayout.PropertyField(specularControl);
if (specularControl.boolValue) {
EditorGUILayout.PropertyField(specularSoftenPower);
}
EditorGUILayout.PropertyField(vignetteSize);
EditorGUILayout.PropertyField(fuzzyness, new GUIContent("Fuzziness"));
EditorGUILayout.PropertyField(contactHardening);
EditorGUILayout.PropertyField(minimumBlur);
EditorGUILayout.PropertyField(blurDownsampling);
EditorGUILayout.PropertyField(blurStrength);
if (reflectionsCount > 0) {
if (!shiny.isDeferredActive) {
EditorGUILayout.HelpBox("Some settings may be overriden by Reflections scripts on specific objects.", MessageType.Info);
}
EditorGUILayout.Separator();
EditorGUILayout.LabelField("Reflections scripts in Scene", EditorStyles.helpBox);
if (shiny.isDeferredActive) {
EditorGUILayout.HelpBox("In deferred rendering path, only global SSR settings are used.", MessageType.Warning);
}
for (int k = 0; k < reflectionsCount; k++) {
Reflections refl = reflections[k];
if (refl == null) continue;
EditorGUILayout.BeginHorizontal();
GUI.enabled = refl.gameObject.activeInHierarchy;
if (GUILayout.Button(new GUIContent(refl.enabled ? bulbOnIcon : bulbOffIcon, "Toggle on/off this reflection"), EditorStyles.miniButton, GUILayout.Width(35))) {
refl.enabled = !refl.enabled;
}
GUI.enabled = true;
if (GUILayout.Button(new GUIContent(deleteIcon, "Remove this reflection script"), EditorStyles.miniButton, GUILayout.Width(35))) {
if (EditorUtility.DisplayDialog("Confirmation", "Remove the reflection script on " + refl.gameObject.name + "?", "Ok", "Cancel")) {
DestroyImmediate(refl);
reflections[k] = null;
continue;
}
}
if (GUILayout.Button(new GUIContent(arrowRight, "Select this reflection script"), EditorStyles.miniButton, GUILayout.Width(35), GUILayout.Width(40))) {
Selection.activeObject = refl.gameObject;
EditorGUIUtility.PingObject(refl.gameObject);
GUIUtility.ExitGUI();
}
GUI.enabled = refl.isActiveAndEnabled;
if (!refl.gameObject.activeInHierarchy) {
GUILayout.Label(refl.name + " (hidden gameobject)");
} else {
GUILayout.Label(refl.name);
}
GUI.enabled = true;
EditorGUILayout.EndHorizontal();
}
} else if (reflectionsCount == 0) {
if (!shiny.isDeferredActive) {
EditorGUILayout.Separator();
EditorGUILayout.LabelField("Reflections in Scene", EditorStyles.helpBox);
EditorGUILayout.HelpBox("In forward rendering path, add a Reflections script to any object or group of objects that you want to get reflections.", MessageType.Info);
}
}
serializedObject.ApplyModifiedProperties();
}
}
}

View File

@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 13896aabf7b59431f81d75f56d7dece0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- bulbOnIcon: {fileID: 2800000, guid: dd840e0a27f8e4bb5844722993c541be, type: 3}
- bulbOffIcon: {fileID: 2800000, guid: 7f28d2ee7b6104945a9761f8a6879afc, type: 3}
- deleteIcon: {fileID: 2800000, guid: d156c5754f844469b8874c1c5fb37e8b, type: 3}
- arrowRight: {fileID: 2800000, guid: cb3a0e4282dfb452884cb8f63e7975f5, type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

View File

@ -0,0 +1,116 @@
fileFormatVersion: 2
guid: cb3a0e4282dfb452884cb8f63e7975f5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,116 @@
fileFormatVersion: 2
guid: 7f28d2ee7b6104945a9761f8a6879afc
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,116 @@
fileFormatVersion: 2
guid: dd840e0a27f8e4bb5844722993c541be
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,116 @@
fileFormatVersion: 2
guid: d156c5754f844469b8874c1c5fb37e8b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 2
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,56 @@
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
namespace ShinySSRR {
[CustomPropertyDrawer(typeof(SubMeshSettingsData))]
public class SubMeshSettingsDrawer : PropertyDrawer {
public override float GetPropertyHeight(SerializedProperty prop, GUIContent label) {
GUIStyle style = GUI.skin.GetStyle("label");
float lineHeight = style.CalcHeight(label, EditorGUIUtility.currentViewWidth);
return lineHeight;
}
public override void OnGUI(Rect position, SerializedProperty prop, GUIContent label) {
Rect firstColumn = position;
firstColumn.width = EditorGUIUtility.labelWidth - firstColumn.x;
Rect secondColumn = position;
secondColumn.x = EditorGUIUtility.labelWidth + 5;
secondColumn.width = position.width - secondColumn.x;
int propIndex = GetArrayIndex(prop);
Reflections refl = (Reflections)prop.serializedObject.targetObject;
if (refl.ssrRenderers != null && refl.ssrRenderers.Count == 1 && refl.ssrRenderers[0].originalMaterials != null) {
List<Material> materials = refl.ssrRenderers[0].originalMaterials;
int matIndex = propIndex;
if (matIndex >= materials.Count) {
matIndex = materials.Count - 1;
}
EditorGUI.LabelField(firstColumn, materials[matIndex].name);
} else {
EditorGUI.LabelField(firstColumn, "SubMesh " + propIndex);
}
EditorGUI.PropertyField(secondColumn, prop.FindPropertyRelative("smoothness"), GUIContent.none);
}
/// <summary>
/// Returns the index of this property in the array
/// </summary>
int GetArrayIndex(SerializedProperty property) {
string s = property.propertyPath;
int bracket = s.LastIndexOf("[");
if (bracket >= 0) {
string indexStr = s.Substring(bracket + 1, s.Length - bracket - 2);
int index;
if (int.TryParse(indexStr, out index)) {
return index;
}
}
return 0;
}
}
}

View File

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

View File

@ -0,0 +1,77 @@
********************************
* SHINY - SSRR *
* Created by Kronnect *
* README FILE *
********************************
This package is designed for the built-in pipeline (for URP, please remove this one and import the other package included in the bundle).
Requirements: Unity 2019.4 or later
How to use the asset
--------------------
Add ShinySSRR to the camera where you want reflections to be visible
Help & Support Forum
--------------------
Check the Documentation (PDF) for detailed instructions:
Have any question or issue?
* Email: contact@kronnect.com
* Support Forum: https://kronnect.com
* Twitter: @Kronnect
If you like Shiny, please rate it on the Asset Store. It encourages us to keep improving it! Thanks!
Future updates
--------------
All our assets follow an incremental development process by which a few beta releases are published on our support forum (kronnect.com).
We encourage you to signup and engage our forum. The forum is the primary support and feature discussions medium.
Of course, all updates of the asset will be eventually available on the Asset Store.
More Cool Assets!
-----------------
Check out our other assets here:
https://assetstore.unity.com/publishers/15018
Version history
---------------
Version 4.1
- Added "Smoothness Threshold" parameter to global settings
Version 4.0
- Added raytracing quality presets
- Added "Refine Thickness" option
- Replaced "Step Size" with "Max Ray Length"
- Added "Stop NaN" option which can prevents artifacts when blending reflections due to pixel values out of range
- Added "Blur Strength" option
- Fixes and minor improvements
Version 3.0
- Redesigned reflection blur with simpler settings and contact hardening option
- New pyramid-blur for contact hardening/distance blur
- Rearranged inspector options
- Material smoothness now reduces fuzzyness
Version 2.6
- Ability to customize the material property names for smoothness map & normal map in Reflections script
Version 2.5
- Added support for smoothness map when using metallic workflow in forward rendering path
Version 1.1
- Max Reflections Multiplier increased to 2
- Added Reflections Min and Max clamping parameters
Version 1.0
- First release for the built-in pipeline based on the URP version feature set

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: afa59e23243a84ed78c2b40071a90760
timeCreated: 1542901568
licenseType: Store
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 8dba4c348fa3a43c096bbbabc14d44b8
folderAsset: yes
timeCreated: 1542876301
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 544859eb1711348f3888a2d91d804bd4
folderAsset: yes
timeCreated: 1542893576
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,134 @@
Shader "Hidden/Kronnect/SSR" {
Properties {
_MainTex("", any) = "" {}
_BumpMap("Normal Map", 2D) = "bump" {}
_SmoothnessMap("Smoothness Map", 2D) = "white" {}
_Color("", Color) = (1,1,1)
_NoiseTex("", any) = "" {}
_SSRSettings("", Vector) = (1,1,1,1)
_SSRSettings2("", Vector) = (1,1,1,1)
}
HLSLINCLUDE
#pragma target 3.0
ENDHLSL
Subshader {
Tags { "RenderType" = "Transparent" "DisableBatching"="True" "ForceNoShadowCasting"="True" }
HLSLINCLUDE
#pragma target 3.0
#pragma prefer_hlslcc gles
#pragma exclude_renderers d3d11_9x
#include "UnityCG.cginc"
ENDHLSL
Pass { // 0: Copy exact
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragCopyExact
#include "SSR_Blends.hlsl"
ENDHLSL
}
Pass { // 1: Surface reflection
HLSLPROGRAM
#pragma vertex VertSSRSurf
#pragma fragment FragSSRSurf
#pragma multi_compile_local _ SSR_NORMALMAP
#pragma multi_compile_local _ SSR_SMOOTHNESSMAP
#pragma multi_compile_local _ SSR_JITTER
#pragma multi_compile_local _ SSR_THICKNESS_FINE
#include "SSR_Common.hlsl"
#include "SSR_Surface_Pass.hlsl"
ENDHLSL
}
Pass { // 2 Resolve
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragResolve
#include "SSR_Solve.hlsl"
ENDHLSL
}
Pass { // 3 Blur horizontally
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertBlur
#pragma fragment FragBlur
#pragma multi_compile_local _ SSR_DENOISE
#define SSR_BLUR_HORIZ
#include "SSR_Blur.hlsl"
ENDHLSL
}
Pass { // 4 Blur vertically
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertBlur
#pragma multi_compile_local _ SSR_DENOISE
#pragma fragment FragBlur
#include "SSR_Blur.hlsl"
ENDHLSL
}
Pass { // 5 Debug
ZWrite Off ZTest Always Cull Off
Blend One Zero
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragCopyExact
#include "SSR_Blends.hlsl"
ENDHLSL
}
Pass { // 6 Combine
ZWrite Off ZTest Always Cull Off
Blend One One // precomputed alpha in Resolve pass
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragCombine
#include "SSR_Blends.hlsl"
ENDHLSL
}
Pass { // 7 Combine with compare
ZWrite Off ZTest Always Cull Off
Blend One One // precomputed alpha in Resolve pass
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragCombineWithCompare
#include "SSR_Blends.hlsl"
ENDHLSL
}
Pass { // 8 Deferred pass
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragSSR
#pragma multi_compile_local _ SSR_JITTER
#pragma multi_compile_local _ SSR_THICKNESS_FINE
#include "SSR_Common.hlsl"
#include "SSR_GBuf_Pass.hlsl"
ENDHLSL
}
Pass { // 9: Copy with bilinear filter
ZWrite Off ZTest Always Cull Off
HLSLPROGRAM
#pragma vertex VertSSR
#pragma fragment FragCopy
#include "SSR_Blends.hlsl"
ENDHLSL
}
}
FallBack Off
}

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 3dc251e8adb204285a24311c59c0dc71
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,115 @@
#ifndef SSR_BLENDS
#define SSR_BLENDS
// Copyright 2021 Kronnect - All Rights Reserved.
#include "SSR_Common.hlsl"
UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
float4 _MainTex_ST;
float4 _MainTex_TexelSize;
float4 _SSRSettings4;
#define SEPARATION_POS _SSRSettings4.x
float _MinimumBlur;
UNITY_DECLARE_SCREENSPACE_TEXTURE(_RayCastRT);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_ReflectionsRT);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurRTMip0);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurRTMip1);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurRTMip2);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurRTMip3);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurRTMip4);
struct Attributes {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VaryingsSSR {
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
VaryingsSSR VertSSR(Attributes input) {
VaryingsSSR output;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = UnityObjectToClipPos(input.vertex);
output.uv = UnityStereoScreenSpaceUVAdjust(input.uv, _MainTex_ST);
return output;
}
half4 FragCopy (VaryingsSSR i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
half4 pixel = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv);
return pixel;
}
half4 FragCopyExact (VaryingsSSR i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
half4 pixel = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv);
pixel = max(pixel, 0.0);
return pixel;
}
half4 Combine (VaryingsSSR i) : SV_Target {
// exclude skybox from blur bleed
float depth01 = GetDepth01(i.uv);
if (depth01 >= 1) return half4(0,0,0,0);
half4 mip0 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_ReflectionsRT, i.uv);
half4 mip1 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_BlurRTMip0, i.uv);
half4 mip2 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_BlurRTMip1, i.uv);
half4 mip3 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_BlurRTMip2, i.uv);
half4 mip4 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_BlurRTMip3, i.uv);
half4 mip5 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_BlurRTMip4, i.uv);
half r = mip5.a;
half4 reflData = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_RayCastRT, i.uv);
if (reflData.z > 0) {
r = min(reflData.z, r);
}
half roughness = clamp(r + _MinimumBlur, 0, 5);
half w0 = max(0, 1.0 - roughness);
half w1 = max(0, 1.0 - abs(roughness - 1.0));
half w2 = max(0, 1.0 - abs(roughness - 2.0));
half w3 = max(0, 1.0 - abs(roughness - 3.0));
half w4 = max(0, 1.0 - abs(roughness - 4.0));
half w5 = max(0, 1.0 - abs(roughness - 5.0));
half4 refl = mip0 * w0 + mip1 * w1 + mip2 * w2 + mip3 * w3 + mip4 * w4 + mip5 * w5;
return refl;
}
half4 FragCombine (VaryingsSSR i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
return Combine(i);
}
half4 FragCombineWithCompare (VaryingsSSR i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
if (i.uv.x < SEPARATION_POS - _MainTex_TexelSize.x * 3) {
return 0;
} else if (i.uv.x < SEPARATION_POS + _MainTex_TexelSize.x * 3) {
return 1.0;
} else {
return Combine(i);
}
}
#endif // SSR_BLENDS

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 744b9a39168214ae0a406965afb5f3d5
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,98 @@
#ifndef SSR_BLUR
#define SSR_BLUR
// Copyright 2021 Kronnect - All Rights Reserved.
UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
float4 _MainTex_ST;
float4 _MainTex_TexelSize;
UNITY_DECLARE_SCREENSPACE_TEXTURE(_RayCastRT);
float4 _SSRSettings4;
#define DENOISE_POWER _SSRSettings4.w
float2 _SSRBlurStrength;
#define BLUR_STRENGTH_HORIZ _SSRBlurStrength.x
#define BLUR_STRENGTH_VERT _SSRBlurStrength.y
#if defined(UNITY_SINGLE_PASS_STEREO)
#define SSR_VERTEX_CROSS_DATA
#define SSR_VERTEX_OUTPUT_GAUSSIAN_UV(o)
#if defined(SSR_BLUR_HORIZ)
#define SSR_FRAG_SETUP_GAUSSIAN_UV(i) float2 offset1 = float2(_MainTex_TexelSize.x * 1.3846153846 * BLUR_STRENGTH_HORIZ, 0); float2 offset2 = float2(_MainTex_TexelSize.x * 3.2307692308 * BLUR_STRENGTH_HORIZ, 0);
#else
#define SSR_FRAG_SETUP_GAUSSIAN_UV(i) float2 offset1 = float2(0, _MainTex_TexelSize.y * 1.3846153846 * BLUR_STRENGTH_VERT); float2 offset2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * BLUR_STRENGTH_VERT);
#endif
#else
#define SSR_VERTEX_CROSS_DATA float2 offset1 : TEXCOORD1; float2 offset2 : TEXCOORD2;
#if defined(SSR_BLUR_HORIZ)
#define SSR_VERTEX_OUTPUT_GAUSSIAN_UV(o) o.offset1 = float2(_MainTex_TexelSize.x * 1.3846153846 * BLUR_STRENGTH_HORIZ, 0); o.offset2 = float2(_MainTex_TexelSize.x * 3.2307692308 * BLUR_STRENGTH_HORIZ, 0);
#else
#define SSR_VERTEX_OUTPUT_GAUSSIAN_UV(o) o.offset1 = float2(0, _MainTex_TexelSize.y * 1.3846153846 * BLUR_STRENGTH_VERT); o.offset2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * BLUR_STRENGTH_VERT);
#endif
#define SSR_FRAG_SETUP_GAUSSIAN_UV(i) float2 offset1 = i.offset1; float2 offset2 = i.offset2;
#endif
struct Attributes {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VaryingsCross {
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
SSR_VERTEX_CROSS_DATA
UNITY_VERTEX_OUTPUT_STEREO
};
VaryingsCross VertBlur(Attributes input) {
VaryingsCross output;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_TRANSFER_INSTANCE_ID(v, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = UnityObjectToClipPos(input.vertex);
output.uv = UnityStereoScreenSpaceUVAdjust(input.uv, _MainTex_ST);
SSR_VERTEX_OUTPUT_GAUSSIAN_UV(output)
return output;
}
inline half getLuma(float3 rgb) {
const half3 lum = float3(0.299, 0.587, 0.114);
return dot(rgb, lum);
}
half4 FragBlur (VaryingsCross i): SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
SSR_FRAG_SETUP_GAUSSIAN_UV(i)
float2 uv = i.uv;
half4 c0 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv);
half4 c1 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv + offset1);
half4 c2 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv - offset1);
half4 c3 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv + offset2);
half4 c4 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv - offset2);
#if SSR_DENOISE
half l0 = abs(getLuma(c0.rgb));
half l1 = abs(getLuma(c1.rgb));
half l2 = abs(getLuma(c2.rgb));
half l3 = abs(getLuma(c3.rgb));
half l4 = abs(getLuma(c4.rgb));
half ml = (l0+l1+l2+l3+l4) * 0.2;
c0.rgb *= pow( (1.0 + min(ml, l0)) / (1.0 + l0) , DENOISE_POWER);
c1.rgb *= pow( (1.0 + min(ml, l1)) / (1.0 + l1) , DENOISE_POWER);
c2.rgb *= pow( (1.0 + min(ml, l2)) / (1.0 + l2) , DENOISE_POWER);
c3.rgb *= pow( (1.0 + min(ml, l3)) / (1.0 + l3) , DENOISE_POWER);
c4.rgb *= pow( (1.0 + min(ml, l4)) / (1.0 + l4) , DENOISE_POWER);
#endif
half4 blurred = c0 * 0.2270270270 + (c1 + c2) * 0.3162162162 + (c3 + c4) * 0.0702702703;
return blurred;
}
#endif // SSR_BLUR

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 22f6b60d67e3646a5af5737d10b8b4d8
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,177 @@
#ifndef SSR_COMMON
#define SSR_COMMON
struct VertexPositionInputs
{
float3 positionWS; // World space position
float3 positionVS; // View space position
float4 positionCS; // Homogeneous clip space position
float4 positionNDC;// Homogeneous normalized device coordinates
};
struct VertexNormalInputs
{
float3 tangentWS;
float3 bitangentWS;
float3 normalWS;
};
#define FLT_MIN 1.175494351e-38 // Minimum normalized positive floating-point number
// Normalize that account for vectors with zero length
float3 SafeNormalize(float3 inVec)
{
float dp3 = max(FLT_MIN, dot(inVec, inVec));
return inVec * rsqrt(dp3);
}
float4x4 GetObjectToWorldMatrix()
{
return UNITY_MATRIX_M;
}
float4x4 GetWorldToObjectMatrix()
{
return unity_WorldToObject;
}
float4x4 GetWorldToViewMatrix()
{
return UNITY_MATRIX_V;
}
float4x4 GetWorldToHClipMatrix()
{
return UNITY_MATRIX_VP;
}
float3 GetCameraPositionWS()
{
return _WorldSpaceCameraPos;
}
float3 TransformObjectToWorld(float3 positionOS)
{
return mul(GetObjectToWorldMatrix(), float4(positionOS, 1.0)).xyz;
}
float3 TransformWorldToView(float3 positionWS)
{
return mul(GetWorldToViewMatrix(), float4(positionWS, 1.0)).xyz;
}
float3 TransformObjectToWorldDir(float3 dirOS)
{
// Normalize to support uniform scaling
return SafeNormalize(mul((float3x3)GetObjectToWorldMatrix(), dirOS));
}
float3 TransformWorldToViewDir(float3 dirWS)
{
return mul((float3x3)GetWorldToViewMatrix(), dirWS).xyz;
}
float4 TransformObjectToHClip(float3 positionOS)
{
// More efficient than computing M*VP matrix product
return mul(GetWorldToHClipMatrix(), mul(GetObjectToWorldMatrix(), float4(positionOS, 1.0)));
}
float4 TransformWorldToHClip(float3 positionWS)
{
return mul(GetWorldToHClipMatrix(), float4(positionWS, 1.0));
}
float3 TransformTangentToWorld(float3 dirTS, float3x3 tangentToWorld)
{
// Note matrix is in row major convention with left multiplication as it is build on the fly
return mul(dirTS, tangentToWorld);
}
float3 TransformObjectToWorldNormal(float3 normalOS)
{
#ifdef UNITY_ASSUME_UNIFORM_SCALING
return TransformObjectToWorldDir(normalOS);
#else
// Normal need to be multiply by inverse transpose
return SafeNormalize(mul(normalOS, (float3x3)GetWorldToObjectMatrix()));
#endif
}
VertexPositionInputs GetVertexPositionInputs(float3 positionOS)
{
VertexPositionInputs input;
input.positionWS = TransformObjectToWorld(positionOS);
input.positionVS = TransformWorldToView(input.positionWS);
input.positionCS = TransformWorldToHClip(input.positionWS);
float4 ndc = input.positionCS * 0.5f;
input.positionNDC.xy = float2(ndc.x, ndc.y * _ProjectionParams.x) + ndc.w;
input.positionNDC.zw = input.positionCS.zw;
return input;
}
float GetOddNegativeScale()
{
return unity_WorldTransformParams.w;
}
VertexNormalInputs GetVertexNormalInputs(float3 normalOS, float4 tangentOS)
{
VertexNormalInputs tbn;
// mikkts space compliant. only normalize when extracting normal at frag.
float sign = tangentOS.w * GetOddNegativeScale();
tbn.normalWS = TransformObjectToWorldNormal(normalOS);
tbn.tangentWS = TransformObjectToWorldDir(tangentOS.xyz);
tbn.bitangentWS = cross(tbn.normalWS, tbn.tangentWS) * sign;
return tbn;
}
float4 ComputeClipSpacePosition(float2 positionNDC, float deviceDepth)
{
float4 positionCS = float4(positionNDC * 2.0 - 1.0, deviceDepth, 1.0);
#if UNITY_UV_STARTS_AT_TOP
// Our world space, view space, screen space and NDC space are Y-up.
// Our clip space is flipped upside-down due to poor legacy Unity design.
// The flip is baked into the projection matrix, so we only have to flip
// manually when going from CS to NDC and back.
positionCS.y = -positionCS.y;
#endif
return positionCS;
}
float3 ComputeViewSpacePosition(float2 positionNDC, float deviceDepth, float4x4 invProjMatrix)
{
float4 positionCS = ComputeClipSpacePosition(positionNDC, deviceDepth);
float4 positionVS = mul(invProjMatrix, positionCS);
// The view space uses a right-handed coordinate system.
positionVS.z = -positionVS.z;
return positionVS.xyz / positionVS.w;
}
UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
float4 _CameraDepthTexture_TexelSize;
inline float GetDepth01(float2 uv) {
float rawDepth = SAMPLE_DEPTH_TEXTURE_LOD(_CameraDepthTexture, float4(uv, 0, 0)).r;
return Linear01Depth(rawDepth);
}
inline float GetLinearDepth(float2 uv) {
float rawDepth = SAMPLE_DEPTH_TEXTURE_LOD(_CameraDepthTexture, float4(uv, 0, 0)).r;
return LinearEyeDepth(rawDepth);
}
#endif // SSR_COMMON

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: fe624f91c6d944cbd9575730aae2653d
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,201 @@
#ifndef SSR_GBUF_PASS
#define SSR_GBUF_PASS
// Copyright 2021 Kronnect - All Rights Reserved.
sampler2D _NoiseTex;
float4 _NoiseTex_TexelSize;
float4 _MaterialData;
#define SMOOTHNESS _MaterialData.x
#define FRESNEL _MaterialData.y
#define FUZZYNESS _MaterialData.z
#define DECAY _MaterialData.w
float4 _SSRSettings;
#define THICKNESS _SSRSettings.x
#define SAMPLES _SSRSettings.y
#define BINARY_SEARCH_ITERATIONS _SSRSettings.z
#define MAX_RAY_LENGTH _SSRSettings.w
float2 _SSRSettings5;
#define REFLECTIONS_THRESHOLD _SSRSettings5.y
#if SSR_THICKNESS_FINE
#define THICKNESS_FINE _SSRSettings5.x
#else
#define THICKNESS_FINE THICKNESS
#endif
float4 _SSRSettings2;
#define JITTER _SSRSettings2.x
#define CONTACT_HARDENING _SSRSettings2.y
float4 _SSRSettings3;
#define INPUT_SIZE _SSRSettings3.xy
#define GOLDEN_RATIO_ACUM _SSRSettings3.z
#define DEPTH_BIAS _SSRSettings3.w
float4x4 _WorldToViewDir;
UNITY_DECLARE_SCREENSPACE_TEXTURE(_CameraGBufferTexture1);
UNITY_DECLARE_SCREENSPACE_TEXTURE(_CameraGBufferTexture2);
#define dot2(x) dot(x, x)
struct Attributes {
float4 positionOS : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VaryingsSSR {
float4 positionCS : SV_POSITION;
float4 uv : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
VaryingsSSR VertSSR(Attributes input) {
VaryingsSSR output;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
output.uv.xy = input.uv;
float4 projPos = output.positionCS * 0.5;
projPos.xy = projPos.xy + projPos.w;
output.uv.zw = projPos.xy;
return output;
}
float4 SSR_Pass(float2 uv, float3 normalVS, float3 rayStart, float smoothness) {
float3 viewDirVS = normalize(rayStart);
float3 rayDir = reflect( viewDirVS, normalVS );
// if ray is toward the camera, early exit (optional)
//if (rayDir.z < 0) return 0.0.xxxx;
float rayLength = MAX_RAY_LENGTH;
float3 rayEnd = rayStart + rayDir * rayLength;
if (rayEnd.z < _ProjectionParams.y) {
rayLength = (rayStart.z - _ProjectionParams.y) / rayDir.z;
}
rayEnd = rayStart + rayDir * rayLength;
float4 sposStart = mul(unity_CameraProjection, float4(rayStart, 1.0));
float4 sposEnd = mul(unity_CameraProjection, float4(rayEnd, 1.0));
float k0 = rcp(sposStart.w);
float q0 = rayStart.z * k0;
float k1 = rcp(sposEnd.w);
float q1 = rayEnd.z * k1;
float4 p = float4(uv, q0, k0);
// length in pixels
float2 uv1 = (sposEnd.xy * rcp(rayEnd.z) + 1.0) * 0.5;
float2 duv = uv1 - uv;
float2 duvPixel = abs(duv * INPUT_SIZE);
float pixelDistance = max(duvPixel.x, duvPixel.y);
pixelDistance = max(1, pixelDistance);
int sampleCount = (int)SAMPLES;
float scale = max(1, SAMPLES * rcp(pixelDistance));
sampleCount = (int)(sampleCount * rcp(scale));
float4 pincr = float4(duv, q1-q0, k1-k0) * rcp(sampleCount);
#if SSR_JITTER
float jitter = tex2D(_NoiseTex, uv * INPUT_SIZE * _NoiseTex_TexelSize.xy + GOLDEN_RATIO_ACUM).r;
//pincr *= 1.0 + jitter * JITTER;
p += pincr * (jitter * JITTER);
#endif
float collision = 0;
float dist = 0;
float zdist = 0;
UNITY_LOOP
for (int k = 0; k < sampleCount; k++) {
p += pincr;
if (any(floor(p.xy)!=0)) return 0.0.xxxx; // exit if out of screen space
float sceneDepth = GetLinearDepth(p.xy);
float pz = p.z / p.w;
float depthDiff = pz - sceneDepth;
if (depthDiff > 0 && depthDiff < THICKNESS) {
float4 origPincr = pincr;
p -= pincr;
float reduction = 1.0;
UNITY_LOOP
for (int j = 0; j < BINARY_SEARCH_ITERATIONS; j++) {
reduction *= 0.5;
p += pincr * reduction;
sceneDepth = GetLinearDepth(p.xy);
pz = p.z / p.w;
depthDiff = sceneDepth - pz;
pincr = sign(depthDiff) * origPincr;
}
#if SSR_THICKNESS_FINE
if (abs(depthDiff) < THICKNESS_FINE)
#endif
{
float hitAccuracy = 1.0 - abs(depthDiff) / THICKNESS_FINE;
zdist = (pz - rayStart.z) / (0.0001 + rayEnd.z - rayStart.z);
float rayFade = 1.0 - saturate(zdist);
collision = hitAccuracy * rayFade;
break;
}
pincr = origPincr;
p += pincr;
}
}
if (collision > 0) {
// intersection found
float reflectionIntensity = smoothness * pow(collision, DECAY);
// compute fresnel
float fresnel = 1.0 - FRESNEL * abs(dot(normalVS, viewDirVS));
float reflectionAmount = reflectionIntensity * fresnel;
// compute blur amount
float wdist = rayLength * zdist;
float blurAmount = max(0, wdist - CONTACT_HARDENING) * FUZZYNESS * (1 - smoothness);
// return hit pixel
return float4(p.xy, blurAmount + 0.001, reflectionAmount);
}
return float4(0,0,0,0);
}
float4 FragSSR (VaryingsSSR input) : SV_Target {
UNITY_SETUP_INSTANCE_ID(input);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, input.uv.xy).r;
#if UNITY_REVERSED_Z
depth = 1.0 - depth;
#endif
if (depth >= 1.0) return float4(0,0,0,0);
depth = 2.0 * depth - 1.0;
float3 positionVS = ComputeViewSpacePosition(input.uv.zw, depth, unity_CameraInvProjection);
float4 normals = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraGBufferTexture2, input.uv.xy);
float3 normalWS = normals.xyz * 2.0 - 1.0;
float3 normalVS = mul((float3x3)_WorldToViewDir, normalWS);
normalVS.z *= -1.0;
float smoothness = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraGBufferTexture1, input.uv.xy).a;
smoothness = max(0, smoothness - REFLECTIONS_THRESHOLD);
float4 reflection = SSR_Pass(input.uv.xy, normalVS, positionVS, smoothness);
return reflection;
}
#endif // SSR_GBUF_PASS

View File

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

View File

@ -0,0 +1,69 @@
#ifndef SSR_SOLVE
#define SSR_SOLVE
// Copyright 2021 Kronnect - All Rights Reserved.
UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
float4 _MainTex_ST;
float4 _MainTex_TexelSize;
UNITY_DECLARE_SCREENSPACE_TEXTURE(_RayCastRT);
float4 _SSRSettings2;
#define REFLECTIONS_MULTIPLIER _SSRSettings2.z
float4 _SSRSettings4;
#define REFLECTIONS_MIN_INTENSITY _SSRSettings4.y
#define REFLECTIONS_MAX_INTENSITY _SSRSettings4.z
#define VIGNETTE_SIZE _SSRSettings2.w
#define dot2(x) dot(x, x)
struct Attributes {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VaryingsSSR {
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
VaryingsSSR VertSSR(Attributes input) {
VaryingsSSR output;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = UnityObjectToClipPos(input.vertex);
output.uv = UnityStereoScreenSpaceUVAdjust(input.uv, _MainTex_ST);
return output;
}
half4 FragResolve (VaryingsSSR i) : SV_Target {
UNITY_SETUP_INSTANCE_ID(i);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
half4 reflData = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_RayCastRT, i.uv);
half4 reflection = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, reflData.xy);
reflection.rgb = min(reflection.rgb, 1.0); // stop NAN pixels
half vd = dot2( (reflData.xy - 0.5) * 2.0 );
half vignette = saturate( VIGNETTE_SIZE - vd * vd );
half reflectionIntensity = clamp(reflData.a * REFLECTIONS_MULTIPLIER, REFLECTIONS_MIN_INTENSITY, REFLECTIONS_MAX_INTENSITY) * vignette;
reflection.rgb *= reflectionIntensity;
reflection.rgb = min(reflection.rgb, 1.2); // clamp max brightness
// conserve energy
half4 pixel = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv);
reflection.rgb -= pixel.rgb * reflectionIntensity;
// keep blur factor in alpha channel
reflection.a = reflData.z;
return reflection;
}
#endif // SSR_SOLVE

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: a40b0a3683e1a478ab7da6e74a644e00
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,240 @@
#ifndef SSR_SURF_FX
#define SSR_SURF_FX
// Copyright 2021 Kronnect - All Rights Reserved.
sampler2D _NoiseTex;
sampler2D _BumpMap;
sampler2D _SmoothnessMap;
float4 _BumpMap_ST;
float4 _NoiseTex_TexelSize;
float4 _MaterialData;
#define SMOOTHNESS _MaterialData.x
#define FRESNEL _MaterialData.y
#define FUZZYNESS _MaterialData.z
#define DECAY _MaterialData.w
float4 _SSRSettings;
#define THICKNESS _SSRSettings.x
#define SAMPLES _SSRSettings.y
#define BINARY_SEARCH_ITERATIONS _SSRSettings.z
#define MAX_RAY_LENGTH _SSRSettings.w
float2 _SSRSettings5;
#define REFLECTIONS_THRESHOLD _SSRSettings5.y
#if SSR_THICKNESS_FINE
#define THICKNESS_FINE _SSRSettings5.x
#else
#define THICKNESS_FINE THICKNESS
#endif
float4 _SSRSettings2;
#define JITTER _SSRSettings2.x
#define CONTACT_HARDENING _SSRSettings2.y
float4 _SSRSettings3;
#define INPUT_SIZE _SSRSettings3.xy
#define GOLDEN_RATIO_ACUM _SSRSettings3.z
#define DEPTH_BIAS _SSRSettings3.w
#define dot2(x) dot(x, x)
struct AttributesSurf {
float4 positionOS : POSITION;
float2 texcoord : TEXCOORD0;
float3 normalOS : NORMAL;
float4 tangentOS : TANGENT;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VaryingsSSRSurf {
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
float4 scrPos : TEXCOORD1;
float3 positionVS : TEXCOORD2;
#if SSR_NORMALMAP
float4 normal : TEXCOORD3; // xyz: normal, w: viewDir.x
float4 tangent : TEXCOORD4; // xyz: tangent, w: viewDir.y
float4 bitangent : TEXCOORD5; // xyz: bitangent, w: viewDir.z
#else
float3 normal : TEXCOORD3;
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
VaryingsSSRSurf VertSSRSurf(AttributesSurf input) {
VaryingsSSRSurf output = (VaryingsSSRSurf)0;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
VertexPositionInputs positions = GetVertexPositionInputs(input.positionOS.xyz);
VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS, input.tangentOS);
output.positionCS = positions.positionCS;
output.positionVS = positions.positionVS * float3(1,1,-1);
output.scrPos = ComputeScreenPos(positions.positionCS);
output.uv = TRANSFORM_TEX(input.texcoord, _BumpMap);
#if SSR_NORMALMAP
half3 viewDirWS = GetCameraPositionWS() - positions.positionWS;
output.normal = half4(normalInput.normalWS, viewDirWS.x);
output.tangent = half4(normalInput.tangentWS, viewDirWS.y);
output.bitangent = half4(normalInput.bitangentWS, viewDirWS.z);
#else
output.normal = TransformWorldToViewDir(normalInput.normalWS) * float3(1,1,-1);
#endif
#if UNITY_REVERSED_Z
output.positionCS.z += 0.001;
#else
output.positionCS.z -= 0.001;
#endif
return output;
}
float4 SSR_Pass(float2 uv, float3 normalVS, float3 rayStart, float smoothness) {
float3 viewDirVS = normalize(rayStart);
float3 rayDir = reflect( viewDirVS, normalVS );
// if ray is toward the camera, early exit (optional)
//if (rayDir.z < 0) return 0.0.xxxx;
float rayLength = MAX_RAY_LENGTH;
float3 rayEnd = rayStart + rayDir * rayLength;
if (rayEnd.z < _ProjectionParams.y) {
rayLength = (rayStart.z - _ProjectionParams.y) / rayDir.z;
}
rayEnd = rayStart + rayDir * rayLength;
float4 sposStart = mul(unity_CameraProjection, float4(rayStart, 1.0));
float4 sposEnd = mul(unity_CameraProjection, float4(rayEnd, 1.0));
float k0 = rcp(sposStart.w);
float q0 = rayStart.z * k0;
float k1 = rcp(sposEnd.w);
float q1 = rayEnd.z * k1;
float4 p = float4(uv, q0, k0);
// depth clip check
float sceneDepth = GetLinearDepth(p.xy);
float pz = p.z / p.w;
if (sceneDepth < pz - DEPTH_BIAS) return 0;
// length in pixels
float2 uv1 = (sposEnd.xy * rcp(rayEnd.z) + 1.0) * 0.5;
float2 duv = uv1 - uv;
float2 duvPixel = abs(duv * INPUT_SIZE);
float pixelDistance = max(duvPixel.x, duvPixel.y);
pixelDistance = max(1, pixelDistance);
int sampleCount = (int)SAMPLES;
float scale = max(1, SAMPLES * rcp(pixelDistance));
sampleCount = (int)(sampleCount * rcp(scale));
float4 pincr = float4(duv, q1-q0, k1-k0) * rcp(sampleCount);
#if SSR_JITTER
float jitter = tex2D(_NoiseTex, uv * INPUT_SIZE * _NoiseTex_TexelSize.xy + GOLDEN_RATIO_ACUM).r;
//pincr *= 1.0 + jitter * JITTER;
p += pincr * (jitter * JITTER);
#endif
float collision = 0;
float dist = 0;
float zdist = 0;
UNITY_LOOP
for (int k = 0; k < sampleCount; k++) {
p += pincr;
if (any(floor(p.xy)!=0)) return 0.0.xxxx; // exit if out of screen space
sceneDepth = GetLinearDepth(p.xy);
pz = p.z / p.w;
float depthDiff = pz - sceneDepth;
if (depthDiff > 0 && depthDiff < THICKNESS) {
float4 origPincr = pincr;
p -= pincr;
float reduction = 1.0;
UNITY_LOOP
for (int j = 0; j < BINARY_SEARCH_ITERATIONS; j++) {
reduction *= 0.5;
p += pincr * reduction;
sceneDepth = GetLinearDepth(p.xy);
pz = p.z / p.w;
depthDiff = sceneDepth - pz;
pincr = sign(depthDiff) * origPincr;
}
#if SSR_THICKNESS_FINE
if (abs(depthDiff) < THICKNESS_FINE)
{
#endif
float hitAccuracy = 1.0 - abs(depthDiff) / THICKNESS_FINE;
zdist = (pz - rayStart.z) / (0.0001 + rayEnd.z - rayStart.z);
float rayFade = 1.0 - saturate(zdist);
collision = hitAccuracy * rayFade;
break;
#if SSR_THICKNESS_FINE
}
pincr = origPincr;
p += pincr;
#endif
}
}
if (collision > 0) {
// intersection found
float reflectionIntensity = smoothness * pow(collision, DECAY);
// compute fresnel
float fresnel = 1.0 - FRESNEL * abs(dot(normalVS, viewDirVS));
float reflectionAmount = reflectionIntensity * fresnel;
// compute blur amount
float wdist = rayLength * zdist;
float blurAmount = max(0, wdist - CONTACT_HARDENING) * FUZZYNESS * (1 - smoothness);
// return hit pixel
return float4(p.xy, blurAmount + 0.001, reflectionAmount);
}
return float4(0,0,0,0);
}
float4 FragSSRSurf (VaryingsSSRSurf input) : SV_Target {
UNITY_SETUP_INSTANCE_ID(input);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
input.scrPos.xy /= input.scrPos.w;
input.scrPos = UnityStereoTransformScreenSpaceTex(input.scrPos);
#if SSR_NORMALMAP
float4 packedNormal = tex2D(_BumpMap, input.uv);
float3 normalTS = UnpackNormal(packedNormal);
half3 viewDirWS = half3(input.normal.w, input.tangent.w, input.bitangent.w);
float3 normalWS = TransformTangentToWorld(normalTS, half3x3(input.tangent.xyz, input.bitangent.xyz, input.normal.xyz));
float3 normalVS = TransformWorldToViewDir(normalWS);
normalVS.z *= -1;
#else
float3 normalVS = input.normal;
#endif
#if SSR_SMOOTHNESSMAP
float smoothness = SMOOTHNESS * tex2D(_SmoothnessMap, input.uv).a;
#else
float smoothness = SMOOTHNESS;
#endif
smoothness = max(0, smoothness - REFLECTIONS_THRESHOLD);
float4 reflection = SSR_Pass(input.scrPos.xy, normalVS, input.positionVS, smoothness);
return reflection;
}
#endif // SSR_SURF_FX

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,116 @@
fileFormatVersion: 2
guid: 61cdb903ff6ea425583a56231df1cd06
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

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