Martin Donald

Martin Donald

Technical Artist and Game Developer. I like to make games, tech demos and fun tutorials.

Пікірлер

  • @asterixus
    @asterixus5 күн бұрын

    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_art9 күн бұрын

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

  • @marijanfabris9983
    @marijanfabris998313 күн бұрын

    Is it possible to rotate them based on uv center?

  • @Raccoon0710
    @Raccoon071015 күн бұрын

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

  • @MartinDonald
    @MartinDonald14 күн бұрын

    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
    @Raccoon071014 күн бұрын

    @@MartinDonald Thank you very much ;)

  • @Raccoon0710
    @Raccoon071014 күн бұрын

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

  • @MartinDonald
    @MartinDonald14 күн бұрын

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

  • @ArthurPhoenix
    @ArthurPhoenix17 күн бұрын

    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
    @MartinDonald15 күн бұрын

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

  • @abdullahihussein9389
    @abdullahihussein938923 күн бұрын

    good explanation. Highly appreciated.

  • @kurtisgibson2929
    @kurtisgibson292923 күн бұрын

    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
    @YouCodeThings24 күн бұрын

    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
    @diegoantoniorosariopalomin49772 ай бұрын

    The multi layer distance field blew me away

  • @pu55yEaterr
    @pu55yEaterr2 ай бұрын

    shitass simple algorithm named like some new quantum mechanic exploits

  • @theman7050
    @theman70502 ай бұрын

    Wow, your content is next level!

  • @FishSticker
    @FishSticker2 ай бұрын

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

  • @jumpkut
    @jumpkut2 ай бұрын

    Nice one!

  • @magnuspedersen5751
    @magnuspedersen57513 ай бұрын

    This is super cool

  • @ChowderhoundGames
    @ChowderhoundGames3 ай бұрын

    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-tr1mn3 ай бұрын

    where's the sudoku demo

  • @williamlee9669
    @williamlee96693 ай бұрын

    minesweeper =D

  • @lucasleite1559
    @lucasleite15593 ай бұрын

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

  • @Topyy
    @Topyy4 ай бұрын

    Is the script downloadable anywhere?

  • @ArrisarJ
    @ArrisarJ4 ай бұрын

    co_ords :(

  • @MrSefsdf
    @MrSefsdf4 ай бұрын

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

  • @DrBossKey
    @DrBossKey4 ай бұрын

    This is fantastic! Thank you!

  • @RooterDelWifiXs
    @RooterDelWifiXs4 ай бұрын

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

  • @MartinDonald
    @MartinDonald4 ай бұрын

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

  • @jehree9850
    @jehree98504 ай бұрын

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

  • @aucer7904
    @aucer79044 ай бұрын

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

  • @AndersonMancini
    @AndersonMancini4 ай бұрын

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

  • @hongphat85
    @hongphat854 ай бұрын

    Thank you so much.

  • @chntnshrff
    @chntnshrff4 ай бұрын

    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
    @drummerman8834 ай бұрын

    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-yb5cn3np5q5 ай бұрын

    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
    @cookieBadger5 ай бұрын

    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
    @djalexander9685 ай бұрын

    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
    @cookieBadger5 ай бұрын

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

  • @lemonjumpsofficial
    @lemonjumpsofficial5 ай бұрын

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

  • @isaackershnerART
    @isaackershnerART5 ай бұрын

    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
    @DogeisCut5 ай бұрын

    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
    @syedharis32355 ай бұрын

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

  • @BrunoHsdc
    @BrunoHsdc5 ай бұрын

    This channel is pure gold!

  • @YoNoSe1989
    @YoNoSe19895 ай бұрын

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

  • @Myblogband
    @Myblogband5 ай бұрын

    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-kz4pf2uz1n5 ай бұрын

    The Art of Code

  • @thequarkchronicles2486
    @thequarkchronicles24866 ай бұрын

    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! :)