From ddd16ffda11267c9525d72f39b283041ef083472 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Tue, 14 Feb 2023 22:06:55 +0100 Subject: [PATCH] fix box origin, limit water level to always be below camera --- Assets/sunset_box/Sunset Env.mat | 1 + Assets/sunset_box/sunset_box.fbx | Bin 17020 -> 16988 bytes Assets/sunset_box/sunset_box.unity | 17 +++++++++++------ Assets/sunset_box/sunset_env_dynamic.shader | 7 ++++--- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Assets/sunset_box/Sunset Env.mat b/Assets/sunset_box/Sunset Env.mat index 02cc7f9..2aae5e5 100644 --- a/Assets/sunset_box/Sunset Env.mat +++ b/Assets/sunset_box/Sunset Env.mat @@ -72,6 +72,7 @@ Material: - _Glossiness: 0.5 - _GlossyReflections: 1 - _Grid: 0 + - _HeightOffset: -0.7 - _HorizonTint: 0.1 - _Metallic: 0 - _Mode: 0 diff --git a/Assets/sunset_box/sunset_box.fbx b/Assets/sunset_box/sunset_box.fbx index 2ce4fc3cee6d43e7853389adbe0fb27ffcb5544f..08448662253149c3b2393e2bf6e765ccd89e33e4 100644 GIT binary patch delta 1608 zcmZ`(3rtgI6u$qp1tKE&z>Cu;drn*#r^B7kJ_(HnSi)wpY&DG1%)Vr(QE>5=288+V0C6U-z4D!#jQxLId|OBSdfGqFgr9Zfl2R zaUd`9s5lHP;%w(8{2AVWsK@FvpDnaoGFe-e16v$gh1G#Jl(+b;WXAFSDpU8@P0I0F zD?L?Hwy<*6*y__=eODERk~1Y|_b)LmFn8~(KUjZf*YD2je}D9~uJq#VJ>9N8YKctM z`*=Gv@3`h=d*E`k-W>nD@S;ZAy`f8UGVZ;kyBi07`1YF1JXqPK%}qb;ePfxcxGODb z+p%A$-j0au16{?dm(8O~@AlP&8&9e_&IdcXjppvw4?~Bd2fh&pL^U+dtU%;oG#I1X z(62C6GL2M9pjsvfN|Jb-L{df`Yr^FaUrFEtsSGv3UP-j`Sj;QR6YTI#Dk#j$u-dZL zkgvcy?&=@TPnoiU@wvTNbiCfavUz!4$3JCE>AAKGf)_PiQq8y-(-)=vbSZAmZbxkB zUTxL>XXZ|GiL1#hvUT#8R)6MmtG(pAsH(GTYx|RjmXA64(D?M@$QMiLT{ouNk2_0J zpGBRku5E2`URc>%UU8}W*6J~)i`4z>eT#2KpSY&%+^@Q_p6=cEa;rEv{BXsSw5OMk zw>93YZ`}AmaKFT%ZQ^|%+FW{mg|k1iG(9inaL5r?s-mi6@KAq^=}d!bk}mXdd~ep^ zme%s7fTB{dcKy=J*{wrQrT5Zfou>3Zrf4S>6FXZn*Kmy)mbuUu6G|c}*F+Qy?@EQp z1PM|(S_fZB<>ZxF4M(Mk2vH6E*g}NnfZpy5ry`0B$z4|8Y@)_eT1a-PK}8uzkp|XK zI?}9xGZal8(0~uEfGV|se58SeG(|>fp@NR}8hH6q&sZT@8%Lhd!W2g3<`6o_VN%gf z(CY$u#&rk%AXO(4=ITcB7?tJ**sKc^?eTE`w6ln{LaN-7Ce!)l5m z|D?Dakp#SHBl;8;&@`%tZM2$vL_>;J3;qlrF%Zb4pcRnK!07 zGYgNXbvlS;QwcTgh)|-XiDa6VN;*r9fkR0|ghTh+_^W%q`|~}|d*A!q_rCYu+Jd^b zpd-P^8AK4oG(-^iBLZ+`F0f|X62{??Y6v<^XSQTJs00qimkh;|sAQ`pB|(mH#}GV7 zXU@nl+x?^vlm97oeU`HcqN)g$1u^%$S}drV5gf`3YfukbvJ7vfQ^^i{4=kJ&#*E}9 zA~4TNbAFAdVFyG5uEUL#&0$Wa>?t|;k4Eco%|TmBYeP2+MiG_lp#A#yI@Y44#Qe6b z!oZ39?yRzSxF^qkS3=!9t0AY8M7IE_eOzF6>_QAZmI2A!kQs$C}UU7Jc8c zXI8@|Z%Ac#YHSwonD^4HZGo4c7#}}uKe*@dT1C8h-{o&VanG1|YVk(4p_0Gf8edv0vqvoN){8COZDKKW|^XL*}|TviY6%UWK7UF+MV7(u>IQ zF_vB`+u51Ns8g3NrQ&)Z#!dPp+Lw! z-e)lyiUr}28xu-0=T;TPXc0=Ux;e*&&<4;7qsZez+8^ff@ANMl@n#JMd>k`_3Kr^P|fF~JG zej@?n6xoCm(>DbY?;Fp?W5QPk2EFj1WIidBLJL;_LDEoiwG>>6mtu19D*c;g>#{Q( z<~L32Dc>eseH6|;f|az+lw!7|%|pi^UCNiJ6@GCMm>aG$IVhXil%f5#O~Rs=O$xyc zm6ApgsGsxYd58=er5rL^1{sP7QYWJokaH9;S;9fpppofGrW{ITIy4WOWJ+?291bW| z=oeTcH;`jv;fP#`4B(Z^$PZ%Suqu|-)!VC4-;aehl@xMh95fYbVpmA()PsQ=)JERe z&Bm&Tq>;EuHQ`t1f8t6Mv^Z1+>lKlx0g4q9$Z9n$jT9@Paq1j+hQ$^tefrLUNvR}< zseJm3a93$SA3?NAg&HACB_qeGu{;e*1+QumItUu|I&O)EUff@T=2V%eHMh!2h*>n5ANqz`r!UB`|^S23urjHe}@BbzcXKdVTgbL`i$+TAz!0| IE1IHz0SG<&KL7v# diff --git a/Assets/sunset_box/sunset_box.unity b/Assets/sunset_box/sunset_box.unity index 2dc9a06..0d3f0a7 100644 --- a/Assets/sunset_box/sunset_box.unity +++ b/Assets/sunset_box/sunset_box.unity @@ -186,7 +186,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a37fd8d654d5c2840a0ab3a5ad65a5ae, type: 3} m_Name: m_EditorClassIdentifier: - spawnHeight: 0 + spawnHeight: 0.6 useAdditionalValues: 0 syncValues: [] propPrivacy: 1 @@ -221,7 +221,7 @@ SphereCollider: m_Enabled: 1 serializedVersion: 2 m_Radius: 0.05 - m_Center: {x: 0.7, y: 0.05, z: -0.8} + m_Center: {x: 0.75, y: 0, z: -0.75} --- !u!1 &1702728164 GameObject: m_ObjectHideFlags: 0 @@ -248,7 +248,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1702728164} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.7, y: 0.05, z: -0.8} + m_LocalPosition: {x: 0.75, y: 0, z: -0.75} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} m_Children: [] m_Father: {fileID: 733733049} @@ -412,6 +412,11 @@ PrefabInstance: propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} propertyPath: m_LocalPosition.x @@ -430,12 +435,12 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} propertyPath: m_LocalRotation.w - value: 0.7071068 + value: 1 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} propertyPath: m_LocalRotation.x - value: -0.7071068 + value: 0 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} @@ -450,7 +455,7 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} propertyPath: m_LocalEulerAnglesHint.x - value: -90 + value: 0 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 5009e49fafd33ed0e980b53b1f9e954d, type: 3} diff --git a/Assets/sunset_box/sunset_env_dynamic.shader b/Assets/sunset_box/sunset_env_dynamic.shader index c48fb3f..6db39e7 100644 --- a/Assets/sunset_box/sunset_env_dynamic.shader +++ b/Assets/sunset_box/sunset_env_dynamic.shader @@ -21,6 +21,7 @@ _StarSizeRandom ("Star size randomness", Range(0, 1)) = 0.5 _StarTint ("Star tint", Range(0, 1)) = 0.4 [Header(Water)] + _HeightOffset ("Height offset", Range(-10, 10)) = -0.5 _WaterCol ("Water color", Color) = (0.03, 0.08, 0.12, 1.0) _WaveStrength ("Wave scale", Range(0, 1)) = 1 [NoScaleOffset] @@ -78,6 +79,7 @@ sampler2D _WaterSurface; float3 _WaterCol; + float _HeightOffset; float _WaveStrength; float _Grid; @@ -170,15 +172,15 @@ float3 sun_dir = float3(sin(_SunAngle), 0, cos(_SunAngle)); float water_mod = 0; - // float water_reflection = 0; float3 dir = normalize(i.hit_pos - i.cam_pos); float theta = atan2(dir.x, dir.z); // latitude float phi = asin(dir.y); // longitude if (phi < 0) { - float3 object_pos = mul(unity_ObjectToWorld, float4(0, 0, 0, 1)); + float3 object_pos = mul(unity_ObjectToWorld, float4(0, _HeightOffset, 0, 1)); float3 camera_local_pos = i.cam_pos - object_pos; + camera_local_pos.y = max(camera_local_pos.y, 0.01); // don't allow looking under water surface; it renders backwards. float3 surface_pos = float3 ( camera_local_pos.x - camera_local_pos.y / (dir.y / dir.x), 0, @@ -189,7 +191,6 @@ dir = reflect(dir, water_normal); phi = asin(dir.y); water_mod = dot(dir, water_normal); - // water_reflection = 1; } float3 col = sky(dir, theta, phi, sun_dir);