diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/14.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/14.prefab index 35ada92ba7..0d76b00cdf 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/14.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/14.prefab @@ -64,7 +64,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/24.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/24.prefab index 6ad7402f85..44c75b9261 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/24.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/24.prefab @@ -64,7 +64,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/2663.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/2663.prefab index a45d62b711..a8eb30bad5 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/2663.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/2663.prefab @@ -65,7 +65,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/47.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/47.prefab index f8fd0caf62..68bb638f1e 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/47.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/47.prefab @@ -64,7 +64,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4737.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4737.prefab index e210045af5..715dce4caf 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4737.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4737.prefab @@ -97,7 +97,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4821.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4821.prefab index d188b88233..66685a29d8 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4821.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4821.prefab @@ -96,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4823.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4823.prefab index 6e9548321b..5f86df403a 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4823.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4823.prefab @@ -96,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4838.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4838.prefab index 1fdd7fd47a..208f1913b9 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4838.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4838.prefab @@ -96,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4853.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4853.prefab index e625bc5322..b472b5b0ed 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4853.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4853.prefab @@ -64,7 +64,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4855.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4855.prefab index 0950e9f149..87c1c576a7 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/4855.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/4855.prefab @@ -96,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/49.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/49.prefab index 7c024bb128..8401bb7361 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/49.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/49.prefab @@ -96,7 +96,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Models/maps/a61/waters/65.prefab b/Assets/ModelRenderer/Art/Models/maps/a61/waters/65.prefab index f4f318bbb5..107b2e0469 100644 --- a/Assets/ModelRenderer/Art/Models/maps/a61/waters/65.prefab +++ b/Assets/ModelRenderer/Art/Models/maps/a61/waters/65.prefab @@ -64,7 +64,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1ac436974d9a3a14ab8d8ec85fc8f2df, type: 2} + - {fileID: 2100000, guid: 1b9823b5bf0301f4581c148b6a2645f4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader b/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader index 8fcfa05a78..f58a736f83 100644 --- a/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader +++ b/Assets/ModelRenderer/Art/Shaders/UnlitVertexColorUnlit.shader @@ -230,6 +230,59 @@ Shader "BrewMonster/UnlitVertexColorUnlit" } ENDHLSL } + + Pass + { + Name "DepthNormals" + Tags { "LightMode" = "DepthNormals" } + + ZWrite On + Cull Back + + HLSLPROGRAM + #pragma vertex DepthNormalsVertex + #pragma fragment DepthNormalsFragment + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + struct Attributes + { + float4 position : POSITION; + float3 normal : NORMAL; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float3 normalWS : TEXCOORD0; + }; + + CBUFFER_START(UnityPerMaterial) + float4 _Texture_1_ST; + float4 _Texture_2_ST; + float4 _Texture_3_ST; + float4 _MaskTexture_ST; + half _Brightness; + CBUFFER_END + + Varyings DepthNormalsVertex(Attributes input) + { + Varyings output; + VertexPositionInputs positionInputs = GetVertexPositionInputs(input.position.xyz); + VertexNormalInputs normalInputs = GetVertexNormalInputs(input.normal); + + output.positionCS = positionInputs.positionCS; + output.normalWS = normalInputs.normalWS; + return output; + } + + half4 DepthNormalsFragment(Varyings input) : SV_TARGET + { + float3 normalWS = normalize(input.normalWS); + return half4(normalWS * 0.5 + 0.5, 0); + } + ENDHLSL + } } FallBack "Universal Render Pipeline/Unlit" diff --git a/Assets/water.meta b/Assets/water.meta new file mode 100644 index 0000000000..2920bf25c1 --- /dev/null +++ b/Assets/water.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fa8f3034a9b2e34dbb43ab302864e9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/water/ClearWaterShader.shader b/Assets/water/ClearWaterShader.shader new file mode 100644 index 0000000000..2359b47354 --- /dev/null +++ b/Assets/water/ClearWaterShader.shader @@ -0,0 +1,252 @@ +Shader "Custom/ClearWaterShaderV3" +{ + Properties + { + [Header(Water Colors)] + _ShallowColor ("Shallow Water Color", Color) = (0.325, 0.807, 0.971, 0.8) + _DeepColor ("Deep Water Color", Color) = (0.086, 0.407, 1, 0.95) + _DepthMaxDistance ("Depth Max Distance", Float) = 1 + + [Header(Shore Visibility)] + _ShoreDistance ("Shore Visibility Distance", Range(0, 5)) = 1.0 + _ShoreFade ("Shore Fade Smoothness", Range(0.01, 2)) = 0.5 + + [Header(Foam)] + _FoamColor ("Foam Color", Color) = (1, 1, 1, 1) + _FoamDistance ("Foam Distance", Range(0, 2)) = 0.4 + _FoamIntensity ("Foam Intensity", Range(0, 2)) = 1 + _EdgeFoamWidth ("Edge Foam Width", Range(0.001, 0.5)) = 0.1 + _VertexColorFoamWidth ("Vertex Color Foam Width", Range(0, 1)) = 0.3 + + [Header(Wave Animation)] + _WaveHeight ("Wave Height", Range(0, 0.5)) = 0.05 + _WaveFrequency ("Wave Frequency", Range(0, 10)) = 2 + _WaveSpeed ("Wave Speed", Range(0, 5)) = 1 + _WaveDirection ("Wave Direction", Vector) = (1, 0, 0, 0) + + [Header(Textures)] + _SurfaceNoise ("Surface Noise", 2D) = "white" {} + _SurfaceNoiseCutoff ("Surface Noise Cutoff", Range(0, 1)) = 0.6 + _SurfaceNoiseScale ("Surface Noise Scale", Float) = 1 + + _NormalMap ("Normal Map", 2D) = "bump" {} + _NormalStrength ("Normal Strength", Range(0, 2)) = 0.5 + _NormalScale ("Normal Scale", Float) = 1 + + [Header(Reflection)] + _Smoothness ("Smoothness", Range(0, 1)) = 0.9 + _FresnelPower ("Fresnel Power", Range(0, 10)) = 5 + _ReflectionStrength ("Reflection Strength", Range(0, 1)) = 0.3 + + [Header(Movement)] + _TextureSpeed ("Texture Speed", Float) = 0.1 + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "RenderType" = "Transparent" + "RenderPipeline" = "UniversalRenderPipeline" + } + + Pass + { + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 tangentOS : TANGENT; + float2 uv : TEXCOORD0; + float4 color : COLOR; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + float4 screenPos : TEXCOORD1; + float3 normalWS : TEXCOORD2; + float3 tangentWS : TEXCOORD3; + float3 bitangentWS : TEXCOORD4; + float3 viewDirWS : TEXCOORD5; + float3 positionWS : TEXCOORD6; + float waveValue : TEXCOORD7; + float4 vertexColor : COLOR; + }; + + sampler2D _SurfaceNoise; + sampler2D _NormalMap; + + CBUFFER_START(UnityPerMaterial) + float _SurfaceNoiseCutoff; + float _SurfaceNoiseScale; + float _FoamDistance; + float _FoamIntensity; + float _EdgeFoamWidth; + float _VertexColorFoamWidth; + float _DepthMaxDistance; + float _NormalStrength; + float _NormalScale; + float _Smoothness; + float _FresnelPower; + float _ReflectionStrength; + float _TextureSpeed; + float _ShoreDistance; + float _ShoreFade; + float _WaveHeight; + float _WaveFrequency; + float _WaveSpeed; + float4 _WaveDirection; + float4 _ShallowColor; + float4 _DeepColor; + float4 _FoamColor; + CBUFFER_END + + float3 TriplanarSample(sampler2D tex, float3 worldPos, float3 worldNormal, float scale, float2 offset) + { + float3 blendWeights = abs(worldNormal); + blendWeights = blendWeights / (blendWeights.x + blendWeights.y + blendWeights.z); + + float3 xSample = tex2D(tex, worldPos.zy * scale + offset).rgb; + float3 ySample = tex2D(tex, worldPos.xz * scale + offset).rgb; + float3 zSample = tex2D(tex, worldPos.xy * scale + offset).rgb; + + return xSample * blendWeights.x + ySample * blendWeights.y + zSample * blendWeights.z; + } + + float3 TriplanarNormal(sampler2D tex, float3 worldPos, float3 worldNormal, float scale, float2 offset) + { + float3 blendWeights = abs(worldNormal); + blendWeights = blendWeights / (blendWeights.x + blendWeights.y + blendWeights.z); + + float3 xNormal = UnpackNormal(tex2D(tex, worldPos.zy * scale + offset)); + float3 yNormal = UnpackNormal(tex2D(tex, worldPos.xz * scale + offset)); + float3 zNormal = UnpackNormal(tex2D(tex, worldPos.xy * scale + offset)); + + return xNormal * blendWeights.x + yNormal * blendWeights.y + zNormal * blendWeights.z; + } + + Varyings vert(Attributes input) + { + Varyings output; + + VertexPositionInputs positionInputs = GetVertexPositionInputs(input.positionOS.xyz); + VertexNormalInputs normalInputs = GetVertexNormalInputs(input.normalOS, input.tangentOS); + + float3 worldPos = positionInputs.positionWS; + + float2 waveDir = normalize(_WaveDirection.xy); + float waveDist = dot(worldPos.xz, waveDir); + float wavePhase = waveDist * _WaveFrequency - _Time.y * _WaveSpeed; + float wave = sin(wavePhase); + + worldPos.y += wave * _WaveHeight; + + output.positionCS = TransformWorldToHClip(worldPos); + output.positionWS = worldPos; + output.screenPos = ComputeScreenPos(output.positionCS); + output.uv = input.uv; + output.normalWS = normalInputs.normalWS; + output.tangentWS = normalInputs.tangentWS; + output.bitangentWS = normalInputs.bitangentWS; + output.viewDirWS = GetWorldSpaceViewDir(worldPos); + output.waveValue = wave * 0.5 + 0.5; + output.vertexColor = input.color; + + return output; + } + + float4 frag(Varyings input) : SV_Target + { + float3 worldNormal = normalize(input.normalWS); + + float2 timeOffset1 = _Time.y * _TextureSpeed * float2(1, 0.5); + float2 timeOffset2 = _Time.y * _TextureSpeed * float2(-0.7, -0.3); + + float3 normalMap1 = TriplanarNormal(_NormalMap, input.positionWS, worldNormal, _NormalScale, timeOffset1); + float3 normalMap2 = TriplanarNormal(_NormalMap, input.positionWS, worldNormal, _NormalScale * 1.3, timeOffset2); + + float3 normalTS = normalize(normalMap1 + normalMap2); + normalTS.xy *= _NormalStrength; + + float3x3 tangentToWorld = float3x3(input.tangentWS, input.bitangentWS, input.normalWS); + float3 normalWS = normalize(mul(normalTS, tangentToWorld)); + + float2 screenUV = input.screenPos.xy / input.screenPos.w; + + float existingDepth01 = SampleSceneDepth(screenUV); + float existingDepthLinear = LinearEyeDepth(existingDepth01, _ZBufferParams); + float surfaceDepthLinear = LinearEyeDepth(input.positionCS.z, _ZBufferParams); + float depthDifference = existingDepthLinear - surfaceDepthLinear; + + float waterDepthDifference01 = saturate(depthDifference / _DepthMaxDistance); + float3 waterColor = lerp(_ShallowColor.rgb, _DeepColor.rgb, waterDepthDifference01); + + float shoreVisibility = saturate(depthDifference / _ShoreDistance); + shoreVisibility = smoothstep(0, _ShoreFade, shoreVisibility); + + // VERTEX COLOR EDGE DETECTION + float vertexEdge = input.vertexColor.r; + float vertexEdgeFoam = smoothstep(_VertexColorFoamWidth, 0, vertexEdge); + + // Depth-based edge detection (for objects like cylinder) + float depthEdge = saturate(depthDifference / _EdgeFoamWidth); + depthEdge = 1.0 - depthEdge; + depthEdge = pow(depthEdge, 2); + + // Combine both methods + float edgeDetection = max(vertexEdgeFoam, depthEdge); + + float wave = pow(input.waveValue, 2); + float foamArea = 1.0 - saturate(depthDifference / _FoamDistance); + float waveContribution = wave * max(foamArea, vertexEdgeFoam); + + float foamNoise1 = TriplanarSample(_SurfaceNoise, input.positionWS, worldNormal, _SurfaceNoiseScale, timeOffset1).r; + float foamNoise2 = TriplanarSample(_SurfaceNoise, input.positionWS, worldNormal, _SurfaceNoiseScale * 1.5, timeOffset2).r; + float combinedNoise = foamNoise1 * foamNoise2; + + float foamMask = smoothstep(_SurfaceNoiseCutoff - 0.1, _SurfaceNoiseCutoff + 0.1, combinedNoise); + + float edgeFoam = edgeDetection * foamMask; + float waveFoam = waveContribution * foamMask; + + float totalFoam = max(edgeFoam, waveFoam * 0.7) * _FoamIntensity; + totalFoam = saturate(totalFoam); + + float3 viewDir = normalize(input.viewDirWS); + float fresnel = pow(1.0 - saturate(dot(normalWS, viewDir)), _FresnelPower); + + Light mainLight = GetMainLight(); + float3 halfVector = normalize(mainLight.direction + viewDir); + float specular = pow(saturate(dot(normalWS, halfVector)), _Smoothness * 128.0); + + float3 reflection = fresnel * _ReflectionStrength; + + float3 finalColor = waterColor; + finalColor += specular * mainLight.color * 0.5; + finalColor = lerp(finalColor, float3(0.7, 0.85, 1), reflection); + finalColor = lerp(finalColor, _FoamColor.rgb, totalFoam * 0.9); + + float baseAlpha = lerp(_ShallowColor.a, _DeepColor.a, waterDepthDifference01); + float shoreAlpha = lerp(0.8, baseAlpha, shoreVisibility); + float finalAlpha = saturate(shoreAlpha + totalFoam * 0.5); + + return float4(finalColor, finalAlpha); + } + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/water/ClearWaterShader.shader.meta b/Assets/water/ClearWaterShader.shader.meta new file mode 100644 index 0000000000..4021b8bdfc --- /dev/null +++ b/Assets/water/ClearWaterShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9fdb6082ddd77d0409ffb438e5471a8c +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/water/Water.mat b/Assets/water/Water.mat new file mode 100644 index 0000000000..b36783ad1f --- /dev/null +++ b/Assets/water/Water.mat @@ -0,0 +1,71 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water + m_Shader: {fileID: 4800000, guid: 9fdb6082ddd77d0409ffb438e5471a8c, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _DEBUGDEPTH_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 93c0aa606876cb04384552a948f281df, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SurfaceDistortion: + m_Texture: {fileID: 2800000, guid: dddb9fd8d06274742916ff92e905ae48, type: 3} + m_Scale: {x: 10, y: 10} + m_Offset: {x: 0, y: 0} + - _SurfaceNoise: + m_Texture: {fileID: 2800000, guid: b6f4fa4253519934f96d918d7c34bc8d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _DeepAlpha: 0.9 + - _DepthMaxDistance: 0.5 + - _EdgeFoamWidth: 0.5 + - _FoamDistance: 1 + - _FoamIntensity: 1 + - _FoamMaxDistance: 1.2 + - _FoamMinDistance: 0.1 + - _FresnelPower: 5 + - _NormalScale: 0.4 + - _NormalSpeed: 0.1 + - _NormalStrength: 1 + - _ReflectionStrength: 1 + - _ShallowAlpha: 0.5 + - _ShoreDistance: 1 + - _ShoreFade: 1 + - _Smoothness: 0.493 + - _SurfaceDistortionAmount: 0.257 + - _SurfaceNoiseCutoff: 0 + - _SurfaceNoiseScale: 1.7 + - _TextureSpeed: 0.3 + - _WaveFrequency: 5 + - _WaveHeight: 0.1 + - _WaveSpeed: 1 + m_Colors: + - _DeepColor: {r: 0, g: 0.7264151, b: 0.67566013, a: 0.749} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 40, g: 40, b: 0, a: 0} + - _ShallowColor: {r: 0.086908154, g: 0.8773585, b: 0.8218133, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/water/Water.mat.meta b/Assets/water/Water.mat.meta new file mode 100644 index 0000000000..21879e634d --- /dev/null +++ b/Assets/water/Water.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b9823b5bf0301f4581c148b6a2645f4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/water/caust26.tga b/Assets/water/caust26.tga new file mode 100644 index 0000000000..9fadf545b9 Binary files /dev/null and b/Assets/water/caust26.tga differ diff --git a/Assets/water/caust26.tga.meta b/Assets/water/caust26.tga.meta new file mode 100644 index 0000000000..918310bc39 --- /dev/null +++ b/Assets/water/caust26.tga.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: b6f4fa4253519934f96d918d7c34bc8d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/water/water_normal00.tga b/Assets/water/water_normal00.tga new file mode 100644 index 0000000000..1880c67d14 Binary files /dev/null and b/Assets/water/water_normal00.tga differ diff --git a/Assets/water/water_normal00.tga.meta b/Assets/water/water_normal00.tga.meta new file mode 100644 index 0000000000..fcecb1ca64 --- /dev/null +++ b/Assets/water/water_normal00.tga.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 93c0aa606876cb04384552a948f281df +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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: 1 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index e6094ea125..2758853a70 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -13,7 +13,7 @@ PlayerSettings: useOnDemandResources: 0 accelerometerFrequency: 60 companyName: BrewMonster - productName: perfect-world-unity + productName: "Th\u1EBF Gi\u1EDBi Ho\xE0n H\u1EA3o" defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.12156863, g: 0.12156863, b: 0.1254902, a: 1} @@ -70,6 +70,7 @@ PlayerSettings: androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 1 androidUseSwappy: 1 + androidDisplayOptions: 1 androidBlitType: 0 androidResizeableActivity: 1 androidDefaultWindowWidth: 1920 @@ -141,7 +142,7 @@ PlayerSettings: loadStoreDebugModeEnabled: 0 visionOSBundleVersion: 1.0 tvOSBundleVersion: 1.0 - bundleVersion: 1.0 + bundleVersion: 0.1.3 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 @@ -291,7 +292,14 @@ PlayerSettings: AndroidAppBundleSizeToValidate: 200 AndroidReportGooglePlayAppDependencies: 1 androidSymbolsSizeThreshold: 800 - m_BuildTargetIcons: [] + m_BuildTargetIcons: + - m_BuildTarget: + m_Icons: + - serializedVersion: 2 + m_Icon: {fileID: 2800000, guid: 868c09cc52a77aa479da9c226c9cbd50, type: 3} + m_Width: 128 + m_Height: 128 + m_Kind: 0 m_BuildTargetPlatformIcons: - m_BuildTarget: iPhone m_Icons: diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index 6fbd599cad..19677c6126 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -60,4 +60,7 @@ QualitySettings: excludedTargetPlatforms: - Standalone m_TextureMipmapLimitGroupNames: [] - m_PerPlatformDefaultQuality: {} + m_PerPlatformDefaultQuality: + Android: 0 + Standalone: 0 + iPhone: 0