David Holland @davidhol.land · 25/03/2026Epic said they are adding Easy Anti-Cheat in April, so hopefully that will help with the bot detection. 010
David Holland @davidhol.land · 23/01/2026I recently got a fancy OLED monitor, so I've been exploring HDR render targets and SDR/HDR swapchain output with various tone-mapping operators in D3D12 & Vulkan. (SDR video but you get the point.) It's cool and fun :) #odinlang 050
David Holland @davidhol.land · 07/01/2026Excellent video! :) I like that the optimisation is clearly guided by the game design goals, and the problems/solutions are explained with tradeoffs and simplified examples. Looking forward to more! 110
David Holland @davidhol.land · 09/12/2025I think there's a smooth scrolling issue with the demo; this happens to me in Zen and Brave. 110
David Holland @davidhol.land · 02/12/2025Thank you :) I do depth comparison a few pixels down from the current fragment to see if it's larger than some threshold. Seems to work alright. 000
David Holland @davidhol.land · 21/09/2025Yeah I use lerp/smoothstep to subtly blend between each step of the toon shader. Likewise, the cloud noise it not perfectly sharp, which helps with flickering. Good luck with the shader programming, it's fun to learn! 110
David Holland @davidhol.land · 20/09/2025I probably had the grass density too high, it can really be more sparse and still have the desired effect. The clouds are a global noise texture sampled in the light function with world space UVs (when LIGHT_IS_DIRECTIONAL) and used as attenuation for my custom toon shading. 110
David Holland @davidhol.land · 04/08/2025I don't know how Unity does rendering these days, but Godot uses forward rendering, so I just put my custom outline material on each object and it works. In the Water section of the article I have a paragraph about the depth/normals pre-pass, as that information is required for the outlines. 010
David Holland @davidhol.land · 24/07/2025You can either bake that information into the multimesh instance data or sample it from a texture. For my tree leaves, I sample positions/normals on a mesh and pass that into the multimesh. If you're doing procedural terrain grass, let's hope you have a heightmap to sample from. 010
David Holland @davidhol.land · 24/07/2025No problem. You'll need to make sure all your inputs to your lighting model are the same for grass and ground. I set LIGHT_VERTEX equal to the model origin (MODELVIEW_MATRIX[3].xyz) and NORMAL equal to ground/surface normal. 100
Reposted by David HollandSaturn @ordinarycicada.bsky.social · 13/07/2025@davidhol.land vi just wanted to thank you for the guide on the godrays, i managed to get it working! Thank you so much 1102
David Holland @davidhol.land · 21/06/2025Thanks, I'm seeing how far I can get without engines or libraries. I'll still use Godot for prototypes and game jams. 000
David Holland @davidhol.land · 14/06/2025The game from scratch is going well :) I got vulkan & d3d12 renderers, code hot-reload, shader hot-reload, single draw call ui; and stable, frame-rate independent update loop. Going to have a stab at audio next. #odinlang 281
David Holland @davidhol.land · 09/06/2025Thanks, friend. Specifically for this style, it can be hard to add a sense of depth to the scene without it looking too 3D, which is why I spent much effort on the god-rays. Also, smooth shading can look odd, but sharp shadows can cause flickering, due to the low resolution; it's a balancing act. 000
David Holland @davidhol.land · 06/06/2025Man I've ran into this many times, following a bunch of overloaded classes/methods just to find what the "default" values of a struct are. 000
David Holland @davidhol.land · 25/05/2025a point on the plane; I check the shadow attenuation at that point (using a custom Godot shader language function), coloring the fragment if lit; then ray march a few more times using a defined gap to create the layers of light. 110
David Holland @davidhol.land · 25/05/2025I find it difficult to explain, but I'll give it a shot. I have a post-processing shader that ray marches into the scene; there is a mathematically defined plane in world space that is parallel to the sun direction; in view space, using the x/y coords of the current fragment, I solve for z to get... 130
David Holland @davidhol.land · 17/05/2025I’m reading The Art of Game Design and this is the best lens illustration so far. 071
David Holland @davidhol.land · 21/04/2025… the distance from the cell centre, used to animate the lines length. 100
David Holland @davidhol.land · 21/04/2025The red and green channels encode a vector pointing away from the centre of each cell. That way, my shader can extract the horizontal direction relative to the view, even when rotated. The blue channel is random per cell, used for timing offset of animation. Alpha channel is… 100
David Holland @davidhol.land · 25/03/2025Thanks! I'm not totally sure, just building out mechanics that I like. Something single player, with minimal systems; a little adventure :) 020
David Holland @davidhol.land · 22/11/2024I've added Open Graph meta tags to my website so now link cards should look nice :)davidhol.land3D Pixel Art RenderingWhat I've learned making 3D pixel art in Godot and beyond. 8277
David Holland @davidhol.land · 24/09/2024www.davidhol.land/articles/3d-...davidhol.land3D Pixel Art Rendering | David Holland 010
David Holland @davidhol.land · 24/09/2024yeah i'm still doing this sometimes #pixelart #shaders #godot #gamedev 2142
David Holland @davidhol.land · 01/11/2023I made this video just for you under the guise that you were wondering how a 3D pixel art camera works :)youtu.beHow my 3D PIXEL ART Camera Workssome godot things :)Source repository: https://git.sr.ht/~denovodavid/3d-pixel-art-in-godotNext-Gen Pixel Art - Astortion Devlog #20: https://youtu.be/jguyR4... 140
David Holland @davidhol.land · 08/10/2023hello bsky :) I like water #pixelart #shaders #godot #gamedev 1241