1
0
mirror of https://github.com/DigvijaysinhGohil/Godot-Shader-Lib.git synced 2025-01-08 10:23:24 +08:00
2024-07-21 16:45:45 +05:30

3.0 KiB

Ray March node

A simple ray marcher for primitive shapes.


Controls

Name Options Description
SDF (Signed Distance Function) SDBox, SDSphere, SDCapsule, SDCylinder, SDTorus Signed Distance Functions for the shape to draw.

Inputs

Name Type Binding Description
signed distance float none Signed distance calculated from Signed Distance Functions (SDFs)
ray origin vec3 none Ray origin
ray direction vec3 none Normalized ray direction
max steps int none Maximum number of steps for ray marching
max distance float none Maximum distance to march along the ray direction
distance threshold float none Threshold to check against signed distance to determine the ray intersection point.

SDFs Inputs

Name Type Availability Description
cube pos vec3 SDBox Position offset of the box shape
cube eulers vec3 SDBox Rotation of the box shape in Degrees
cube scale vec3 SDBox Scale of the box shape
sphere pos vec3 SDSphere Position offset of the sphere shape
sphere eulers vec3 SDSphere Rotation of the box sphere in Degrees
sphere scale vec3 SDSphere Scale of the sphere shape
capsule pos vec3 SDCapsule Position offset of the capsule shape
capsule eulers vec3 SDCapsule Rotation of the capsule shape in Degrees
capsule height float SDCapsule Height of the capsule shape
capsule radius float SDCapsule Radius of the capsule shape
cylinder pos vec3 SDCylinder Position offset of the cylinder shape
cylinder eulers vec3 SDCylinder Rotation of the cylinder shape in Degrees
cylinder height float SDCylinder Height of the cylinder shape
cylinder radius float SDCylinder Radius of the cylinder shape
torus pos vec3 SDTorus Position offset of the torus shape
torus eulers vec3 SDTorus Rotation of the torus shape in Degrees
torus small radius float SDTorus Small radius of the torus shape
torus big radius float SDTorus Big radius of the torus shape

Outputs

Name Type Binding Description
distance float None Ray intersection distance

Extras

This node is only simple ray marching example, the true power of raymarching can only be achieved by custom SDFs. At the moment I am unable to inject the custom code via visual shaders, so I have provided the custom template at the following location. If you want to know more about raymarching check out this playlist.

The default location can be found at
res://addons/ShaderLib/RayMarching/RayMarchCustomTemplate.gdshaderinc

You can copy the code from RayMarchCustomTemplate.gdshaderinc and then create a Global Expression node and paste it in your visual shader.

Global Expression Node

Lastly you also need to create an Expression node, define required input and output parameters and call the custom ray marching function as below.

Expression Node