diff --git a/Assets/raymarched/Nut.mat b/Assets/raymarched/Nut.mat index cd24932..10ff26e 100644 --- a/Assets/raymarched/Nut.mat +++ b/Assets/raymarched/Nut.mat @@ -72,7 +72,7 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - - _SurfDist: 0.002 + - _SurfDist: 0.001 - _UVSec: 0 - _ZWrite: 1 m_Colors: diff --git a/Assets/raymarched/Raymarching.unity b/Assets/raymarched/Raymarching.unity index da0c86e..3682034 100644 --- a/Assets/raymarched/Raymarching.unity +++ b/Assets/raymarched/Raymarching.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.17883426, g: 0.22392553, b: 0.30580956, a: 1} + m_IndirectSpecularColor: {r: 0.12732331, g: 0.13415194, b: 0.12107967, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -353,6 +353,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 7271f6d6-1e8e-4444-8501-e33df2aad6db + randomNum: --- !u!114 &365616532 MonoBehaviour: m_ObjectHideFlags: 0 @@ -444,7 +445,7 @@ Transform: m_LocalScale: {x: 5, y: 5, z: 5} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 10 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &393448822 GameObject: @@ -733,7 +734,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &683266148 MonoBehaviour: @@ -749,6 +750,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 19ac0a45-6040-4093-92d0-0499e618a878 + randomNum: 17983601 --- !u!114 &683266149 MonoBehaviour: m_ObjectHideFlags: 0 @@ -882,6 +884,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 267a3820-e773-4d80-aa35-8f7551bc813a + randomNum: --- !u!114 &772903852 MonoBehaviour: m_ObjectHideFlags: 0 @@ -992,7 +995,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 11 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &779234488 GameObject: @@ -1034,7 +1037,7 @@ Transform: - {fileID: 393448823} - {fileID: 307897119} m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &779234490 MonoBehaviour: @@ -1050,6 +1053,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: d51b36f3-30c8-4e23-9277-34168a3024b4 + randomNum: --- !u!114 &779234491 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1177,98 +1181,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: type: RaymarcherObjectA ---- !u!1 &845829380 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 845829382} - - component: {fileID: 845829381} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &845829381 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 845829380} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &845829382 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 845829380} - m_LocalRotation: {x: 0.85522455, y: -0.12030997, z: 0.22915669, w: 0.44900298} - m_LocalPosition: {x: 0.16, y: 3, z: 0.09} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 124.6, y: -30, z: 0} --- !u!1 &849578981 GameObject: m_ObjectHideFlags: 0 @@ -1408,6 +1320,7 @@ GameObject: - component: {fileID: 887058548} - component: {fileID: 887058547} - component: {fileID: 887058546} + - component: {fileID: 887058549} m_Layer: 0 m_Name: Nut m_TagString: Untagged @@ -1487,7 +1400,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &887058546 MonoBehaviour: @@ -1503,6 +1416,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: b6156cfd-0daa-4e22-ace6-220b7ba376bc + randomNum: 32637084 --- !u!114 &887058547 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1541,6 +1455,27 @@ MonoBehaviour: snappingReferences: [] autoHold: 0 ikReference: {fileID: 0} +--- !u!114 &887058549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887058541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5256473d683a24743ab8a6b352997437, type: 3} + m_Name: + m_EditorClassIdentifier: + targetMaterial: {fileID: 2100000, guid: c881d33e96e5ee113a7ca92a93839d15, type: 2} + playerRootPositions: _PlayerRootPositions + playerHipPositions: _PlayerHipPositions + playerHeadPositions: _PlayerHeadPositions + playerLeftHandPositions: _PlayerLeftHandPositions + playerRightHandPositions: _PlayerRightHandPositions + playerChestPositions: _PlayerChestPositions + playerLeftFootPositions: _PlayerLeftFootPositions + playerRightFootPositions: _PlayerRightFootPositions --- !u!1 &950930976 GameObject: m_ObjectHideFlags: 0 @@ -1769,7 +1704,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1057832715 MonoBehaviour: @@ -1785,6 +1720,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: e84233ea-a6bb-4e2d-a550-0d201827fc90 + randomNum: 72864126 --- !u!114 &1057832716 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1914,7 +1850,7 @@ Transform: m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1450495540 GameObject: @@ -1953,6 +1889,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: 1dc813d7-f29d-4afc-b082-a37f699f48fb + randomNum: --- !u!114 &1450495542 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2064,7 +2001,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!135 &1450495546 SphereCollider: @@ -2217,7 +2154,7 @@ Transform: m_LocalScale: {x: 19.2, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1500710831 GameObject: @@ -2295,13 +2232,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1500710831} - m_LocalRotation: {x: 0.36414537, y: 0, z: 0, w: 0.9313421} - m_LocalPosition: {x: 0, y: 0.67, z: -0.7} + m_LocalRotation: {x: 0.30261943, y: 0, z: 0, w: 0.95311147} + m_LocalPosition: {x: 0, y: 0.37, z: -0.8} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 42.71, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 35.23, y: 0, z: 0} --- !u!1 &1651833084 GameObject: m_ObjectHideFlags: 0 @@ -2357,6 +2294,7 @@ MonoBehaviour: m_EditorClassIdentifier: type: 3 objectId: e0ad42bf-6854-4fd0-ab9b-b81c76130077 + randomNum: --- !u!114 &1651833087 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2448,7 +2386,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1764646627 GameObject: diff --git a/Assets/raymarched/lib/libgarbage_example.shader b/Assets/raymarched/lib/libgarbage_example.shader index 4ffa564..583b24a 100644 --- a/Assets/raymarched/lib/libgarbage_example.shader +++ b/Assets/raymarched/lib/libgarbage_example.shader @@ -27,7 +27,7 @@ Shader "CrispyPin/LibGarbageExample" #define MAX_DIST _MaxDist #define SURF_DIST _SurfDist - #define REFLECTIONS 1 + #define REFLECTIONS 2 #define LIGHT_FN lighting #define SCENE_FN main @@ -64,36 +64,31 @@ Shader "CrispyPin/LibGarbageExample" SurfacePoint main(float3 p) { Material floor = mat(floor_col(p)); - p.y += 2.5; - // Material green = mat(float3(0.05, 0.8, 0.2)); - Material mat1 = mat(1, 0.3, 0.1); - // Material mat1 = mat(0.05); - Material helix_glossy = mat(float3(1, 0.2, 0.05), 0.5); - SurfacePoint d; + d = mSphere(p - float3(-2, 1, -2), 0.5); + d = qUnion(d, mTorus(p - float3(0, 1, -2), 0.4, 0.1)); + // float3 line_a = float3(1.5, 1.5, -2); + float3 line_a = float3(2 - cos(_Time.z)*0.5, 1.5, -2 - sin(_Time.z)*0.5); + float3 line_b = float3(2 + cos(_Time.z)*0.3, 0.5, -2 + sin(_Time.z)*0.3); + d = qUnion(d, mLine(p, line_a, line_b, 0.2)); - - d = mSphere(p - float3(-2, 1, -2), 0.5, mat1); - d = qUnion(d, mTorus(p - float3(0, 1, -2), 0.4, 0.1, mat1)); - d = qUnion(d, mLine(p, float3(1.5, 1.5, -2), float3(2.5, 0.5, -2), 0.2, mat1)); - - d = qUnion(d, mBox(p - float3(-2, 1, 0), float3(0.5, 0.5, 0.8), mat1)); - d = qUnion(d, mHexPrism(p - float3(0, 1, 0), 0.5, 0.2, mat1)); + d = qUnion(d, mBox(p - float3(-2, 1, 0), float3(0.5, 0.5, 0.8))); + d = qUnion(d, mHexPrism(p - float3(0, 1, 0), 0.5, 0.2)); d = qUnion(d, qIntersect( - mHelix(rotY(p - float3(2, -1, 0), _Time.y), 0.5, 0.2, 0.13, helix_glossy), - mBox(p - float3(2, 1, 0), 1.8, mat1), + mHelix(rotY(p - float3(2, -1, 0), _Time.y), 0.5, 0.2, 0.13), + mBox(p - float3(2, 1, 0), 1.8), 0.05 ) ); - d = qUnion(d, mCylinder(p - float3(-2, 1, 2), 0.4, 0.5, mat1)); + d = qUnion(d, mCylinder(p - float3(-2, 1, 2), 0.4, 0.5)); d = qRound(d, 0.05 * sin(_Time.y)); - float a = (sin(_Time.y)/2 + 0.5) * UNITY_PI; - d = qUnion(d, mCappedTorus(p - float3(0, 1, 2), float2(sin(a), cos(a)), 0.4, 0.1, mat1)); + float torus_angle = (sin(_Time.y)/2 + 0.5) * UNITY_PI; + d = qUnion(d, mCappedTorus(p - float3(0, 1, 2), float2(sin(torus_angle), cos(torus_angle)), 0.4, 0.1)); d = qUnion(d, mFromDist( @@ -101,13 +96,15 @@ Shader "CrispyPin/LibGarbageExample" qRound(sdBox(p - float3(2, 1, 2), 1), 0.005), sdGyroid(p, 12, sin(_Time.y) * UNITY_PI * 0.5, 0.2), 0.01 - ), - helix_glossy + ) ) ); + d.mat = mat(float3(0.1, 0.6, 1.0), 0.5); + float3 p2 = p - float3(0, 2, sin(_Time.x * 5) * 3); + d = qUnion(d, qRound(mBox(p2, float3(6, 4, .2), mat(0.1)), 0.01)); + d = qSub(d, mBox(p2, float3(5.6, 3.6, .25)), 0.02); - // d.mat = mat1; d = qUnion(d, qIntersect( mPlaneY(p, 0, floor), diff --git a/Assets/raymarched/nut.shader b/Assets/raymarched/nut.shader index fcce730..db065dd 100644 --- a/Assets/raymarched/nut.shader +++ b/Assets/raymarched/nut.shader @@ -19,6 +19,10 @@ Shader "CrispyPin/Nut" #pragma vertex vert #pragma fragment frag + #define PLAYER_COUNT 6 + float4 _PlayerRightHandPositions[PLAYER_COUNT]; + float4 _PlayerLeftHandPositions[PLAYER_COUNT]; + int _MaxSteps; float _MaxDist; float _SurfDist; @@ -36,7 +40,7 @@ Shader "CrispyPin/Nut" // #define DISTANCE_FN separate_dist // #define STEP_MULTIPLIER 0.1 - #define SCENE_SCALE 0.8 + #define SCENE_SCALE 0.7 // #define DISABLE_DEPTH // #define DISCARD_ON_MISS @@ -106,12 +110,29 @@ Shader "CrispyPin/Nut" d = qUnion(d, bolt); + // d = qUnion(d, mSphere(p - float3(0,0,.3), 0.15, mat(1,0,0.5)), 0.1); + // floor // d = qUnion(d, mPlaneY(p, -0.5, mat(floor_col, 0)), 0.01); // d = qIntersect(d, mPlaneY(-p, 0.6, mat(floor_col, 0)), 0.01); d = qUnion(d, mBox(p - float3(0, -0.6, 0), float3(6, 0.05, 6), mat(floor(p), 0))); + [unroll] + for (int i = 0; i < PLAYER_COUNT; i++) { + // float visible = (float)(length(_PlayerRightHandPositions[i]) > 0); + // float visible = step(0.01, length(_PlayerRightHandPositions[i])); + [flatten] + if (length(_PlayerRightHandPositions[i]) > 0.01) { + float rad = 0.1; + float3 hand_r = mul(unity_WorldToObject, float4(_PlayerRightHandPositions[i].xyz, 1)).xyz / SCENE_SCALE; + d = qUnion(d, mSphere(p - hand_r, rad, mat(0.1, sin(_Time.y)*0.5 +0.5, 1)), 0.2); + float3 hand_l = mul(unity_WorldToObject, float4(_PlayerLeftHandPositions[i].xyz, 1)).xyz / SCENE_SCALE; + d = qUnion(d, mSphere(p - hand_l, rad, mat(float3(1, 0, 0.1), 0.5)), 0.2); + } + } + + // d = qUnion(d, mSphere(p - float3(0, -0.5, 1), 0.4)); return d; } @@ -137,18 +158,11 @@ Shader "CrispyPin/Nut" return col * (lSky(float3(0,1,0)) + lSun(float3(0,1,0), sun_dir)); } } - float3 col = 0; - col = - // ray.mat.col * - lSun(ray.normal, sun_dir); - col *= lShadow(ray.hit_pos + ray.normal * SURF_DIST, sun_dir, 50); - col += - // ray.mat.col * - lSky(ray.normal); - // float3(0.5, 0.8, 0.9); - // col = ray.mat.col; + float3 light = lSun(ray.normal, sun_dir) + * lShadow(ray.hit_pos + ray.normal * SURF_DIST, sun_dir, 50) + + lSky(ray.normal); - return col*ray.mat.col; + return light * ray.mat.col; }