Kelvin van Hoorn
@kelvinvanhoorn.com
1.2K followers 620 following 130 posts
Experienced Technical Artist 🧙 MSc. of Applied Physics 🧲 Working on something 👀 Loves stylized rendering 🖌️ Portfolio/Website: http://kelvinvanhoorn.com #GameDev #Godot #Shader #Unity #VFX #TechArt #TechArtist
Posts Media Videos Starter Packs
Pinned
Hey, I'm Kelvin a Technical Artist from the Netherlands 🇳🇱, currently based in the UK 🇬🇧

I make shaders from time to time, you can check some of my previous work, including some tutorials, on my website: kelvinvanhoorn.com

You can also find links to my other socials there.
Probably should've added a screenshot of the normal buffer as well
🟩🟨
🟦🟪
Screenshot of the normal buffer, showing the stretched normals on capsules.
Within Blender I do some normal manipulation with 3D noise that I bake as a "normal cubemap".

The baking is done by making a sphere from a subdivided cube, where the UVs are mapped like a 2x3 cubemap.

The result looks a bit like sploshed paint.
Screenshot of blender showing object space normals for a sphere and the resulting cubemap texture.
While it looks nice on metallic objects, especially round ones like the gold sphere, it does not look so good on elongated faces like the sides of a capsule. There it looks more like acne, which isn't great.

It doesn't affect cubes at all, as flat surfaces have no normal variation.
Screenshot of a scene lit by modified normals. You can see streaks of ambient lighting difference on the capsules, which doesn't look great. Screenshot of a gold sphere with modified normals, which looks nice.
Trying some stronger stylisation with normal manipulation. Here I'm sampling a "normal cubemap", with the original normal (in object/model space) as UVW.

It looks nice for some objects, but not so much for others 😅

#GodotEngine #Blender #shader #rendering #stylized
Reposted by Kelvin van Hoorn
Hi, #PortfolioDay 🌿

I'm RJ, a 3D Artist with a love for stylised environments and props.

I'm still aiming to find my first break into the games industry though it has been a rough year.

Would deeply appreciate any guidance from fellow devs 💙

🌐 www.artstation.com/rjducats
✉️ [email protected]
Friendly reminder to always profile your game. I was stress testing my multimesh billboard rendering and the peak time went from 50ms to 20ms because I had the render_mode on depth_draw_always instead of depth_prepass_alpha 👁️🔎

#GodotEngine #profiling #rendering
Reposted by Kelvin van Hoorn
Same technique works quite well for clouds as well 😶‍🌫️👌

The inside of the cloud could use some work though 🔎

#GodotEngine #shader #rendering #clouds
Same technique works quite well for clouds as well 😶‍🌫️👌

The inside of the cloud could use some work though 🔎

#GodotEngine #shader #rendering #clouds
These are the previous 2 attempts

bsky.app/profile/kelv...
Trying out 2 different approaches to leaf rendering on trees.

The first is a custom mesh, where each quad of the mesh is extended along the normals.

The second is are multimeshes of quads, where the normal is based on the vertex position relative to the center of the multimesh.

#GodotEngine
This way I can get shadowcasting on the leaves and also have the silhouette of the leaves cast its shadow. Unfortunately it does mean that the cast shadow does not have any leaf texturing.

There is also a sort of flicker as you rotate as each quad has a flat normal. But I do like the painterly look
I think I've found my solution for the leaves.

It's still a multimesh of billboard quads, but I use a base mesh to construct it. For each vertex of the base mesh I instantiate a billboard and copy the normals. I then use the base mesh for shadow casting with front culled.

#GodotEngine #shader
Reposted by Kelvin van Hoorn
Looking into 3 different methods for low hanging cloud rendering 🌥️

1️⃣ Volumetric fog
2️⃣ Mesh displacement
2️⃣.5️⃣ More detailed mesh with displacement
3️⃣ Billboards

What is your favourite?

#GodotEngine #rendering #shaders #clouds
The billboard approach builds on the leaf billboards, and
trungduyng actually also has a video of using this method for clouds www.youtube.com/watch?v=Rtn0...
Anime Fluffy Cloud Tutorial | Blender (include Project Files)
YouTube video by trungduyng
www.youtube.com
The volumetric fog has the benefit of being a volume (🤯), making it easily interactable. But I can't modify the lighting function.

The mesh has a solid look but might be hard to make look good from the inside.

The billboard has billboard clipping issues, more setup and I need to improve normals.
Looking into 3 different methods for low hanging cloud rendering 🌥️

1️⃣ Volumetric fog
2️⃣ Mesh displacement
2️⃣.5️⃣ More detailed mesh with displacement
3️⃣ Billboards

What is your favourite?

#GodotEngine #rendering #shaders #clouds
Reposted by Kelvin van Hoorn
Been working some more on the grass
🔸BotW style diamond shape mesh
🔸Fixed normals and lighting
🔸Wind rotation instead of translation
🔸Improved wind noise (big wave, small noise)
🔸Improved clustering textures

#screenshotsaturday #Godot #GodotEngine #shaders #rendering
Many of the changes are inspired by this great blender tutorial by trungduyng www.youtube.com/watch?v=M4kM...

Also some screenshots, for if the video gets pixelated.
Screenshot of stylised grass. Screenshot of stylised grass.
Been working some more on the grass
🔸BotW style diamond shape mesh
🔸Fixed normals and lighting
🔸Wind rotation instead of translation
🔸Improved wind noise (big wave, small noise)
🔸Improved clustering textures

#screenshotsaturday #Godot #GodotEngine #shaders #rendering
Reposted by Kelvin van Hoorn
Trying out 2 different approaches to leaf rendering on trees.

The first is a custom mesh, where each quad of the mesh is extended along the normals.

The second is are multimeshes of quads, where the normal is based on the vertex position relative to the center of the multimesh.

#GodotEngine
Looking at Tiny Glade by @pouncelight.bsky.social (another inspiration for the billboard approach) I think they simply don't billboard (nor alpha clip) for the shadow. Which works great from a distance, but I'd like the texture.

Screenshot from this amazing talk: www.youtube.com/watch?v=jusW...
Screenshot from Tiny Glade showing a tree with billboarded leaves and a smooth shadow.
#1 was inspired by this tutorial www.youtube.com/watch?v=flbn... by @polytoots.bsky.social

#2 was inspired by this tutorial www.youtube.com/watch?v=52sT... by trungduyng
While I like the visuals of #2 better, it has issues with shadows. In the video I have shadow receiving turned off for it.

With shadows you either have them billboard to the light which causes sharp edges on the leaves or you billboard them to the camera which destroy the projected shadow.
Screenshot where the leaf billboards also to the light camera, resulting in sharp edges where the shadows cast on the rotating billboards. Screenshot where the leaves always billboard to the main camera (not to each individual camera such as the light camera). Which means your projected shadow dissapears if the camera is orthogonal to the light.
Trying out 2 different approaches to leaf rendering on trees.

The first is a custom mesh, where each quad of the mesh is extended along the normals.

The second is are multimeshes of quads, where the normal is based on the vertex position relative to the center of the multimesh.

#GodotEngine
Reposted by Kelvin van Hoorn
Hi, I'm an Art Director & 3D Game Artist
Available for hire 👐

I worked on award-winning stylized games
Looking for the next project I can contribute to 👀

Please reach out!
💌 [email protected]

RT appreciated ✨
Screenshot of Caravan SandWitch - an openworld narrative exploration game made with a team of ~10 people Characters Concept Art - the nomads of Caravan SandWitch Storyboard for a key scene in the game "The Wanderer - Frankenstein's Creature" Menu mockup for the game "Road 96"