Martin Donald
Martin Donald
  • 9
  • 1 177 202
It Takes Two, lava lamps, Raymarching in Godot 4.1.
In this video I spot a lava lamp in It Takes Two and try to recreate it in Godot 4.1 using raymarching. Which turns out to be a bit overkill.
Chapters:
0:00 Introduction
0:31 SDFs
1:21 What is a Ray?
1:41 Raymarching explanation
2:25 Implementing raymarching in Godot
5:32 Adding surface normal
6:10 Adding more spheres and animation
7:34 Booleans
8:30 Smooth booleans
9:20 Fixing issues
10:56 Adding colour
11:41 Blending between different shapes
12:06 Finished result
References:
iquilezles.org/articles/distfunctions/
ua-cam.com/video/Cp5WWtMoeKg/v-deo.html
docs.godotengine.org/en/stable/tutorials/shaders/advanced_postprocessing.html
Me:
Patreon www.patreon.com/bolddunkley
Twitter bolddunkley
itch.io bolddunkley.itch.io/
Software used for this video:
(Content)
Godot 3.1 godotengine.org/
OBS obsproject.com/
Kdenlive kdenlive.org/en/
Переглядів: 50 401

Відео

Christmas special, making it snow.
Переглядів 41 тис.3 роки тому
For this (belated) Christmas special I take a look at a few different ways we can add snow to a scene and make it interactive. References: Using viewports for dynamic snow: ua-cam.com/video/F_KZyc_kLYs/v-deo.html Sobel filter for normals: stackoverflow.com/questions/5281261/generating-a-normal-map-from-a-height-map Blending normals: blog.selfshadow.com/publications/blending-in-detail/ Me: Patre...
Glyphs, shapes, fonts, signed distance fields.
Переглядів 64 тис.3 роки тому
Old but gold, in this video I explain how to generate and use signed distance field textures for rendering sharp vector-like shapes such as text and graphics. References: cdn.cloudflare.steamstatic.com/apps/valve/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf shaderbits.com/blog/various-distance-field-generation-techniques Me: Patreon www.patreon.com/bolddunkley Twitter bolddunkley ...
Vertex animation textures, beanbags and boneless animations.
Переглядів 114 тис.3 роки тому
The skeletal animation workflow is very common in realtime applications due to its flexibility and performance, but it can make certain types of animations tricky to pull off. In this video I explore using vertex animation textures to get realtime-friendly per-vertex animations from Blender into Godot. References: medium.com/tech-at-wildlife-studios/texture-animation-techniques-1daecb316657# Me...
The Last of Us Part II, material blending, the SDF of a plane.
Переглядів 42 тис.3 роки тому
Sometimes it's good to take a deep dive into a simple idea to make sure you really understand what makes it work. That's what this video was for me; a request from a friend to explain how the submerged vehicle shader from The Last of Us Part II blends in rust and wetness where the geometry meets the water. The original post by Matthew Trevelyan Johns: www.artstation.com/artwork/18x6qK Reference...
Superpositions, Sudoku, the Wave Function Collapse algorithm.
Переглядів 679 тис.3 роки тому
In this video I explore the wave function collapse algorithm, and explain how I went about implementing it using Blender and Godot. WFC demos on itch: bolddunkley.itch.io/wfc-mixed bolddunkley.itch.io/wave-function-collapse References: marian42.de/article/wfc/ oskarstalberg.com/game/wave/wave.html github.com/mxgmn/WaveFunctionCollapse robertheaton.com/2018/12/17/wavefunction-collapse-algorithm/...
Flowmaps, gradient maps, gas giants.
Переглядів 49 тис.3 роки тому
In this video I explore how flowmaps and gradient maps work, and utilise both techniques to create a swirling gas giant shader. FlowMap Painter: teckartist.com/?page_id=107 References: ua-cam.com/video/SA6Y3L-X0Po/v-deo.html ua-cam.com/video/193e1uzzGAk/v-deo.html Me: Patreon www.patreon.com/bolddunkley Twitter bolddunkley itch.io bolddunkley.itch.io/ Software used for this video: (...
Planet atmospheres, ray-sphere intersections.
Переглядів 27 тис.4 роки тому
In this video I create a planet atmosphere effect using ray-sphere intersections. References: ua-cam.com/video/HFPlKQGChpE/v-deo.html gist.github.com/wwwtyro/beecc31d65d1004f5a9d ua-cam.com/video/mKg426Q8iwM/v-deo.html docs.godotengine.org/en/stable/tutorials/shading/advanced_postprocessing.html Me: Patreon www.patreon.com/bolddunkley Twitter bolddunkley itch.io bolddunkley.itch.io/...
Animal Crossing, wobbly leaves, pivot caching.
Переглядів 112 тис.4 роки тому
In this video I reverse engineer the lovely wobbly leafy trees of Animal Crossing: New Horizons using a technique called Pivot Caching. References: www.geeks3d.com/20141201/how-to-rotate-a-vertex-by-a-quaternion-in-glsl/?fbclid=IwAR3k347hpiyblLTohmZTZnk_tbawsaXbiUewbaSSujV6WzBqhylS7fNIQFI Me: Patreon www.patreon.com/bolddunkley Twitter bolddunkley itch.io bolddunkley.itch.io/ Softwa...

КОМЕНТАРІ

  • @asterixus
    @asterixus 7 днів тому

    Hi Martin, I really love your videos and they're so insightful ❤️! I'm a beginner tech artist at the very start of my journey and I don't think I've heard about raymarching until now 😅 I guess my question would be: how do you even begin to look for a solution to something like this, if you wouldn't have known about the concept? And if it's supposed to be common knowledge for a TA.. can you recommend any resources on sort of "here's what you should know about this topic" kind of way? (At least to mention the subjects, i guess it's easier to dig then if you know what you're looking for) Or how do you learn new stuff as a TA? It feels like there's so much out there it's confusing to know where to start 🥲

  • @markhenriksen_art
    @markhenriksen_art 11 днів тому

    So good! thank you for explaining this so clearly to a dumb 3d artist such as myself.

  • @marijanfabris9983
    @marijanfabris9983 15 днів тому

    Is it possible to rotate them based on uv center?

  • @Raccoon0710
    @Raccoon0710 16 днів тому

    Can someone explain why he marked, only one side with 0f. That other side where 0 also will fit with mirrored version..

    • @MartinDonald
      @MartinDonald 16 днів тому

      Exactly! It only fits with a mirrored version of itself, but not with itself alone. 0 is not a valid neighbour of 0, but 0f is, so we need to know which one is flipped/mirrored, and which one isn't. Does that help?

    • @Raccoon0710
      @Raccoon0710 16 днів тому

      @@MartinDonald Thank you very much ;)

    • @Raccoon0710
      @Raccoon0710 16 днів тому

      @@MartinDonald But do you have mirrored version as separate version. Or just scale -1 when place?

    • @MartinDonald
      @MartinDonald 16 днів тому

      @@Raccoon0710 mirrored versions of each module are separate pieces. I think only the rotations are handled using prototypes.

  • @ArthurPhoenix
    @ArthurPhoenix 18 днів тому

    Actual topic aside, this might be the most incredible informational video I have ever seen. The information density is extremely high, yet at no point did I not understand what was going on, or feel the need to pause or rewind.

    • @MartinDonald
      @MartinDonald 17 днів тому

      Thank you so much! This is absolutely the goal I set out for with these videos.

  • @abdullahihussein9389
    @abdullahihussein9389 25 днів тому

    good explanation. Highly appreciated.

  • @kurtisgibson2929
    @kurtisgibson2929 25 днів тому

    This is an amazing anger as I'm unsure how to adjust it so that objects to take up. Multiple cells are able to be accounted for. Is anyone able to to give advise?

  • @YouCodeThings
    @YouCodeThings 26 днів тому

    This is an exceptional video. Thank you for making this!

  • @seanmeyer6436
    @seanmeyer6436 Місяць тому

    I'm new to godot and maybe I missed something but I cannot figure out how the GRADIENT portion works at the end of the video. Is this a separate node I need to create myself and somehow plug into this shader? Thank you for the video, it was fun to follow along

    • @MartinDonald
      @MartinDonald Місяць тому

      Thanks for watching! I'm just using the procedural gradient texture that Godot ships with. You can create one by clicking on an empty texture slot and selecting "New GradientTexture1D".

  • @noamrtdthesorcerer733
    @noamrtdthesorcerer733 Місяць тому

    Watched more than 3 hours of implementations and explanations about wave function collapse, Can confirm that this one was the best from every aspect, Thank you!.

  • @SethPentolope
    @SethPentolope Місяць тому

    As you mentioned, adding weights is important for a more practical usage. You can go a different direction if you really lean into depending on weights. You can have cells that are not adjacent weigh in on what cell type a cell should be. This can help limit behavior like too many house cells or never having a large ocean, since you can have ocean cells make other ocean cells very likely to be chosen if they are nearby or in certain land/ocean patterns. You could even add a property to your ocean cells indicating the depth, which affects the probability of other cells (no land cells within X cells of a X-hundred foot deep ocean cell).

  • @antonsimkin
    @antonsimkin Місяць тому

    it worked on my blender made terrain, but trail is flipped on other, downloaded terrain why would that be?

  • @rusticrick999
    @rusticrick999 Місяць тому

    Same result with the game Minesweeper.

  • @antonsimkin
    @antonsimkin Місяць тому

    imma use it in godot 4

    • @antonsimkin
      @antonsimkin Місяць тому

      i failed

    • @antonsimkin
      @antonsimkin Місяць тому

      nah i succeded. but my snow became brown from dirt for some reason

  • @JustYesntMan
    @JustYesntMan Місяць тому

    where is blender script link

  • @xomvoid_akaluchiru_987
    @xomvoid_akaluchiru_987 Місяць тому

    I saw the Bad North inspired island generation in the thumbnail :) Love the game! I can understand why Oskar is so stuck on the idea (He keeps going back to it on Twitter)

  • @diegoantoniorosariopalomin4977
    @diegoantoniorosariopalomin4977 2 місяці тому

    The multi layer distance field blew me away

  • @pu55yEaterr
    @pu55yEaterr 2 місяці тому

    shitass simple algorithm named like some new quantum mechanic exploits

  • @theman7050
    @theman7050 2 місяці тому

    Wow, your content is next level!

  • @FishSticker
    @FishSticker 2 місяці тому

    Why is it called wave collapse though, just for it's conceptual similarity to quantum stuff

  • @jumpkut
    @jumpkut 2 місяці тому

    Nice one!

  • @magnuspedersen5751
    @magnuspedersen5751 3 місяці тому

    This is super cool

  • @ChowderhoundGames
    @ChowderhoundGames 3 місяці тому

    I'd buy this from your 'atreon but I don't know how to convert it to Godot 4, would take too long to learn

  • @MichaelDarrow-tr1mn
    @MichaelDarrow-tr1mn 3 місяці тому

    where's the sudoku demo

  • @williamlee9669
    @williamlee9669 3 місяці тому

    minesweeper =D

  • @lucasleite1559
    @lucasleite1559 4 місяці тому

    My Flowmap Painter wont let me import any image so I can draw over it -__-'

  • @Topyy
    @Topyy 4 місяці тому

    Is the script downloadable anywhere?

  • @ArrisarJ
    @ArrisarJ 4 місяці тому

    co_ords :(

  • @MrSefsdf
    @MrSefsdf 4 місяці тому

    One of the most effective explanations of ray marching I've come across on YT.

  • @DrBossKey
    @DrBossKey 4 місяці тому

    This is fantastic! Thank you!

  • @RooterDelWifiXs
    @RooterDelWifiXs 4 місяці тому

    Sir, a function over a space is a field, is the same thing

    • @MartinDonald
      @MartinDonald 4 місяці тому

      You're not wrong! But if you were saying "function" to refer to a texture sample I'd be confused.

  • @jehree9850
    @jehree9850 4 місяці тому

    Great video.. but man, people who use 1 or 2 digit variable names are a different kind of chaotic haha

  • @aucer7904
    @aucer7904 4 місяці тому

    When I am finding the solution of jaggy label 3d in godot, this is so awsome!

  • @AndersonMancini
    @AndersonMancini 4 місяці тому

    OMG. This is so awesome 😮. I'm impressed 👏🏻👏🏻👏🏻

  • @hongphat85
    @hongphat85 4 місяці тому

    Thank you so much.

  • @chntnshrff
    @chntnshrff 4 місяці тому

    Hello, thanks for the amazing explanation. Can you please tell or point me to a reference where I will know more about how to loop through each module and store position of each vertex along the edge in blender. Because you mentioned that its better to not do it manually

  • @drummerman883
    @drummerman883 5 місяців тому

    That was just enough information to be able to write it and not be lost. Thank you for not over or under explaining it like most videos do.

  • @user-yb5cn3np5q
    @user-yb5cn3np5q 5 місяців тому

    The algorithm is a bad version of SAT solver algorithms, simpler called DPLL, and more effective called CDCL. Unlike WFC, DPLL can backtrack instead of invalidating the whole progress, and CDCL can avoid most of backtracking by deducing rules about how certain combinations of tiles lead to contradiction. Usual sets of tiles produce an underconstrained set of boolean equations, so certain choices have to be made at random. Random choices can be done unevenly at implementer's discretion. For example, by preferring air tiles for tiles higher from the ground, or water tiles further from island's center.

  • @cookieBadger
    @cookieBadger 5 місяців тому

    I'm not entirely sure why I ran into that issue because I never saw it happen in the video, but in case anybody else is struggling to get the depth test to work: The calculated distance d depends entirely on the position of the camera, and is unaffected by its rotation. This is however not the case for the depth buffer. When the camera turns, the depth of some objects that are now to the edge of the view has decreased. Now, when comparing the distance of a pixel from the raymarching that is far off to the corners of the camera, it might be greater than the depth of an object closely behind, so it doesn't show. This can be fixed by calculating the depth of the raymarched pixel with this line: float z = (PROJECTION_MATRIX * VIEW_MATRIX * vec4(ro + d*rd, 1.0)).z; Now take ALPHA = step(z, min(MAX_DIST, linear_depth)) and your problem should be solved! I was trying to get the project files to verify if this error happens in the original project as well, but they weren't available yet on Pateron. :(

  • @djalexander968
    @djalexander968 5 місяців тому

    well jokes on you i was explicitly looking for methods to code the generation of sudoku puzzles, because doing the math myself sounded hard; turns out i was right

  • @cookieBadger
    @cookieBadger 5 місяців тому

    thanks for this video, it really saved my a*s for a prototype assignment :)

  • @lemonjumpsofficial
    @lemonjumpsofficial 5 місяців тому

    well an sdf is and sdf that was saved into an array lol

  • @isaackershnerART
    @isaackershnerART 5 місяців тому

    i know it has been a while but I am stuck in UE4 trying to decipher what the is equivalent to this line: vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0); specifically, what is INV_PROJECTION_MATRIX for hlsl or in ue4 nodes. Great tutorial btw!!!!

  • @DogeisCut
    @DogeisCut 5 місяців тому

    Im trying to implement raymarching as the main thing in my game using Godot, and im running into issues when using Mod to try to loop space, and also, objects appear bugged in various ways when applying other transformations on them

  • @syedharis3235
    @syedharis3235 5 місяців тому

    how to make flow maps recurring or in a perfect loop?

  • @BrunoHsdc
    @BrunoHsdc 5 місяців тому

    This channel is pure gold!

  • @YoNoSe1989
    @YoNoSe1989 5 місяців тому

    IT ONLY TAKES ABOUT A SECOND. NOTHING TAKES ABOUT A SECOND. NOTHING

  • @Myblogband
    @Myblogband 5 місяців тому

    Wave functions don't collapse. They expand. The phenomenological velocity function is expansive through awareness, as the moment expands into consciousness as a real phenomenon outside of this computerized, quantum mechanical paradigm.

  • @user-kz4pf2uz1n
    @user-kz4pf2uz1n 5 місяців тому

    The Art of Code

  • @thequarkchronicles2486
    @thequarkchronicles2486 6 місяців тому

    I’m a nuclear physicist who misread the title & assumed this was about quantum wavefunctuions… don’t think I’ll ever do anything with this information, but got interested & stuck around anyways. Incredibly engaging & high-quality video, & an excellent explanation even for someone who doesn’t do much with algorithms! :)