summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-10-28 17:16:22 -0700
committeryum <yum.food.vr@gmail.com>2025-10-28 17:19:39 -0700
commit6c93421c1a10caf9e4f6996e1109379a504c19a7 (patch)
tree2008c48a91ff2e4257b0196f3aea5230095f600d
parent6a10c50359aa62405118a78c69dccef0394f8591 (diff)
add ray marching skeleton...
-rw-r--r--ray_marching.cginc36
1 files changed, 36 insertions, 0 deletions
diff --git a/ray_marching.cginc b/ray_marching.cginc
new file mode 100644
index 0000000..69f6438
--- /dev/null
+++ b/ray_marching.cginc
@@ -0,0 +1,36 @@
+#ifndef __RAY_MARCHING_INC
+#define __RAY_MARCHING_INC
+
+struct RayMarchResult {
+ float3 objPos;
+ float3 objNorm;
+};
+
+float3 GetFragToOrigin(v2f i) {
+ return (i.color * 2.0f - 1.0f) / i.color.a;
+}
+
+float4 GetRotation(v2f i, float2 uv_channels) {
+ float4 quat;
+ quat.xy = get_uv_by_channel(i, uv_channels.x);
+ quat.zw = get_uv_by_channel(i, uv_channels.y);
+ return quat;
+}
+
+RayMarchResult march_c31_00(v2f i) {
+ float3 obj_space_camera_pos = mul(unity_WorldToObject, float4(_WorldSpaceCameraPos, 1.0));
+ float3 frag_to_origin = GetFragToOrigin(i);
+
+ float2 uv_channels = float2(_Custom30_Quaternion_UV_Channel_0, _Custom30_Quaternion_UV_Channel_1);
+ float4 quat = GetRotation(i, uv_channels);
+ float4 iquat = float4(-quat.xyz, quat.w);
+
+ float3 ro = -frag_to_origin;
+ float3 rd = normalize(i.objPos - obj_space_camera_pos);
+ rd = rotate_vector(rd, iquat);
+
+ ro -= rd * _Custom30_ro_Offset;
+}
+
+#endif // __RAY_MARCHING_INC
+