Git Product home page Git Product logo

godot4-oceanfft's Introduction

Godot 4 Ocean Addon

An early work in progress ocean addon for Godot 4 base on Jerry Tessendorf's FFT method for generating the waves, using compute shaders to generate the displacement map, and a quad tree based continuous distant dependant level of detail (CDLOD) system to dynamically manage the polygon density without popping or snapping between LOD levels.

The GLSL shaders that generates the displacement map were ported into Godot 4 from this project. The underlying math is identical, but some things like binding points and how uniforms were accessed had to be changed to work in Godots compute shader API.

Ocean

Features

  • FFT ocean wave simulation, wave energy derived from Unified Spectrum
  • Integrated LOD for surface (CDLOD)
  • Basic buoyancy system
  • Basic underwater effect
  • Basic whitecap rendering
  • Surface shading:
    • Transparency
    • Reflections (provided by ReflectionProbe)
    • Refractions
    • Sub surface scattering

Example Scene Controls

Button Action
`/~ Toggle menu/free cam modes
Mouse Motion Free cam look
Right Click Free cam zoom
W Free cam forwards (locked to horizontal plane)
S Free cam backwards (locked to horizontal plane)
A Free cam strafe left (locked to horizontal plane)
D Free cam strafe right (locked to horizontal plane)
Space Free cam up (locked to vertical axis)
Ctrl Free cam down (locked to vertical axis)
Shift Free cam sprint/move faster

Todo List

  • Improve visual rendering
    • Splash particles
    • Improve refractions
    • Improve underwater effect
  • Lower detail but faster visual shader for lower LOD quads
  • Optimize Quadtree3D at large depths
  • Beach/cliff/rocks interactions
  • Wave collision interactions (boat wakes, splashes, etc.)
  • Multiplayer synchronization? This reference may be helpful for this.

OceanCDLOD

OceanUnderwater

OceanCurve

References

Wave Generation Theory

Water Implementation Examples

These are not exclusively limited to ocean wave implementations, and may include other types of water simulations if they include visual rendering techniques that are of value to reference.

AAA-Game Implementation Examples

These generally don't give much in the way of code examples, but do give a higher level overview of how the whole thing comes together.

Level Of Detail Implementation

Foam/Whitecap Rendering

Wave Collision Interaction

Miscellaneous

godot4-oceanfft's People

Contributors

tessarakkt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.