diff --git a/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/Program.cs b/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/Program.cs
new file mode 100644
index 0000000..6c9410c
--- /dev/null
+++ b/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/Program.cs
@@ -0,0 +1,86 @@
+using System.Numerics;
+using Raylib_cs;
+
+namespace RaylibCsExamples.Community.Shaders.Raymarching;
+
+public class Program
+{
+ public static int Main()
+ {
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ var screenWidth = 1600;
+ var screenHeight = 900;
+
+ Raylib.SetConfigFlags(ConfigFlags.ResizableWindow);
+ Raylib.InitWindow(screenWidth, screenHeight, "raylib [shaders] example - raymarching shapes");
+ var camera = new Camera3D
+ {
+ Position = new Vector3(2.5f, 2.5f, 3.0f),
+ Target = new Vector3(0.0f, 0.0f, 0.7f),
+ Up = new Vector3(0.0f, 1.0f, 0.0f),
+ FovY = 65.0f,
+ };
+
+ var shader = Raylib.LoadShader(null, "resources/shaders/glsl330/raymarching.fs");
+
+ var viewEyeLoc = Raylib.GetShaderLocation(shader, "viewEye");
+ var viewCenterLoc = Raylib.GetShaderLocation(shader, "viewCenter");
+ var runTimeLoc = Raylib.GetShaderLocation(shader, "runTime");
+ var resolutionLoc = Raylib.GetShaderLocation(shader, "resolution");
+
+ var resolution = new Vector2(screenWidth, screenHeight);
+
+ Raylib.SetShaderValue(shader, resolutionLoc, resolution, ShaderUniformDataType.Vec2);
+
+ var runTime = 0.0f;
+ Raylib.SetTargetFPS(60);
+ Raylib.SetMousePosition(screenWidth / 2, screenHeight / 2);
+
+ while (!Raylib.WindowShouldClose())
+ {
+ if (Raylib.IsWindowResized())
+ {
+ screenWidth = Raylib.GetScreenWidth();
+ screenHeight = Raylib.GetScreenHeight();
+ resolution = new Vector2(screenWidth, screenHeight);
+
+ Raylib.SetShaderValue(shader, resolutionLoc, resolution, ShaderUniformDataType.Vec2);
+ }
+
+ Raylib.UpdateCamera(ref camera, CameraMode.Free);
+
+ runTime += Raylib.GetFrameTime();
+
+ Raylib.SetShaderValue(shader, viewEyeLoc, camera.Position, ShaderUniformDataType.Vec3);
+ Raylib.SetShaderValue(shader, viewCenterLoc, camera.Target, ShaderUniformDataType.Vec3);
+ Raylib.SetShaderValue(shader, runTimeLoc, runTime, ShaderUniformDataType.Float);
+
+ Raylib.BeginDrawing();
+ {
+ Raylib.ClearBackground(Color.RayWhite);
+
+ Raylib.BeginShaderMode(shader);
+ {
+ Raylib.DrawRectangle(0, 0, screenWidth, screenHeight, Color.White);
+ }
+ Raylib.EndShaderMode();
+
+ Raylib.DrawText(
+ "(c) Raymarching shader by Iñigo Quilez. MIT License.",
+ screenWidth - 280,
+ screenHeight - 20,
+ 10,
+ Color.Black
+ );
+
+ }
+ Raylib.EndDrawing();
+ }
+
+ Raylib.UnloadShader(shader);
+ Raylib.CloseWindow(); // Close window and OpenGL context
+
+ return 0; // Exit the program
+ }
+}
\ No newline at end of file
diff --git a/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/RaylibCsExamples.Community.Shaders.Raymarching.csproj b/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/RaylibCsExamples.Community.Shaders.Raymarching.csproj
new file mode 100644
index 0000000..214ad02
--- /dev/null
+++ b/Community/Shaders/RaylibCsExamples.Community.Shaders.Raymarching/RaylibCsExamples.Community.Shaders.Raymarching.csproj
@@ -0,0 +1,16 @@
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
+
+ Always
+
+
+
+
diff --git a/RaylibCsExamples.slnx b/RaylibCsExamples.slnx
index 1e6d240..e9f2a7f 100644
--- a/RaylibCsExamples.slnx
+++ b/RaylibCsExamples.slnx
@@ -22,6 +22,7 @@
+