Join our Discord Community

React Raymarching Shaders

Hypnotic 3D raymarching effects with ACES tonemapping and dot noise. Pure WebGL shaders for React with TypeScript and shadcn/ui—smooth GPU animations.

Powered by

Building raymarching effects?

Join our Discord community for help from other developers working with WebGL shaders.


Look, we've all tried to build 3D raymarching effects. You either end up with complex 3D libraries that add megabytes to your bundle or JavaScript calculations that destroy your frame rate. This React component uses advanced WebGL fragment shaders with ACES tonemapping and dot noise that actually run at 60fps without melting your CPU.

Smooth raymarching animation

Mesmerizing 3D tunnel effect with mathematical precision that won't destroy your performance metrics:

Loading component...

Inspired by Frostbyte_ Created by Frostbyte_ in 2025-09-18

Built for React applications with TypeScript and Next.js in mind. The animation runs entirely on the GPU using WebGL shaders with ACES filmic tonemapping and XorDev's dot noise algorithm. Works seamlessly with shadcn/ui design systems.

Installation

npx shadcn@latest add https://www.shadcn.io/registry/raymarching-shaders.json
npx shadcn@latest add https://www.shadcn.io/registry/raymarching-shaders.json
pnpm dlx shadcn@latest add https://www.shadcn.io/registry/raymarching-shaders.json
bunx shadcn@latest add https://www.shadcn.io/registry/raymarching-shaders.json

Usage

import { RaymarchingShaders } from "@/components/ui/raymarching-shaders";

export default function Hero() {
  return (
    <RaymarchingShaders>
      <div className="relative z-10">
        <h1>Your content here</h1>
      </div>
    </RaymarchingShaders>
  );
}

Why most raymarching implementations suck

Most developers try to animate 3D raymarching with Three.js or complex 3D libraries. Bad idea. You're loading massive dependencies, dealing with complex scene graphs, and wondering why your React app feels sluggish. Some use canvas drawing with JavaScript raymarching, which sounds smart until you realize you're calculating distance fields on every frame.

This React component uses mathematical fragment shaders with advanced ACES tonemapping and dot noise algorithms. The GPU handles everything using optimized raymarching loops with proper distance estimation. No JavaScript calculations, no frame drops, just smooth 60fps mathematical 3D effects.

Features

  • Zero JavaScript animation overhead - Pure WebGL shaders run on GPU
  • ACES filmic tonemapping with authentic color space conversion for realistic rendering
  • Dot noise algorithm from XorDev for organic pattern generation
  • TypeScript definitions for proper IDE support in React projects
  • Customizable parameters with 4 props for complete control
  • Performance optimization through efficient raymarching loops
  • shadcn/ui compatible for consistent design systems
  • Responsive design with automatic canvas resizing

API Reference

RaymarchingShaders

Main container component for the raymarching effect.

PropTypeDefaultDescription
speednumber1.0Animation speed multiplier (0.1 to 5.0)
intensitynumber1.0Overall brightness intensity (0.1 to 3.0)
complexitynumber1.0Raymarching loop complexity (0.5 to 2.0)
colorShiftnumber1.0Color phase shifting amount (0.0 to 3.0)
classNamestring-Additional Tailwind CSS classes
...propsHTMLAttributes<HTMLDivElement>-All standard div props

Common gotchas

Animation not working: WebGL might not be supported in the browser. The component logs warnings when WebGL initialization fails. Check browser compatibility.

Performance issues on mobile: Some older phones struggle with complex raymarching. Consider reducing the complexity prop (try 0.7-0.8) or disabling animation on mobile devices.

Colors look washed out: The component uses ACES tonemapping for realistic color reproduction. If you prefer more saturated colors, increase the intensity prop (try 1.5-2.0).

Pattern appears static: Make sure the speed prop is not set to 0. The raymarching effect depends on time-based animation for the tunnel movement.

Shader compilation errors: Some graphics drivers have issues with complex fragment shaders. Check the browser console for WebGL errors and consider updating graphics drivers.

You might also like

Explore other shader-based background components for React applications:

Questions developers actually ask