Live data from Hacker News

Real-time dreamy Cloudscapes with Volumetric Raymarching

blog.maximeheckel.com

1–10 of 12 posts

Re: Real-time dreamy Cloudscapes with Volumetric Raymarching

#4
very nice tutorial. If I can make one suggestion is to write the shaders in a GLSL file format (i.e.: .vs, .fs) then just get the text value from it; that way you can get your editor to highlight the GSLS syntax, which is pretty helpful when dealing with complex shaders.

this not, by any means, the best way of doing it, but I felt it was a bit easier writing GLSL code.

https://github.com/victorqribeiro/3Dengine/blob/master/js/Sh...

Re: Real-time dreamy Cloudscapes with Volumetric Raymarching

#5
post #4

very nice tutorial. If I can make one suggestion is to write the shaders in a GLSL file format (i.e.: .vs, .fs) then just get the text value from it; that way you can get your editor to highlight the GSLS syntax, which is pretty helpful when dealing with complex shaders. this not, by any means, the best way of doing it, but I felt it was a bit easier writing GLSL code. https://github.com/victorqribeiro/3Dengine/blob/…

> .vs, .fs

Is that like a Unity or Unreal standard? The thing I'm familiar with is a single .glsl with a void fragment() and void vertex() etc. in it

Re: Real-time dreamy Cloudscapes with Volumetric Raymarching

#6
post #5
post #4

very nice tutorial. If I can make one suggestion is to write the shaders in a GLSL file format (i.e.: .vs, .fs) then just get the text value from it; that way you can get your editor to highlight the GSLS syntax, which is pretty helpful when dealing with complex shaders. this not, by any means, the best way of doing it, but I felt it was a bit easier writing GLSL code. https://github.com/victorqribeiro/3Dengine/blob/…

> .vs, .fs Is that like a Unity or Unreal standard? The thing I'm familiar with is a single .glsl with a void fragment() and void vertex() etc. in it

When you’re writing graphics engines (at least from my experience in OpenGL) you tend to write the vertex and fragment shaders in different files and link them when you actually need to render something. That way you can use combinations of them. The vs or fs extension is used to understand which one it is at a glance.

Re: Real-time dreamy Cloudscapes with Volumetric Raymarching

#7
Great job explaning the whole process! I've been building some similar stuff recently for my procedural space-exploration side project (https://www.threads.net/@mrsharpoblunto/post/CufzeNxt9Ol). I was planning to do a dev blog post writing a lot of the details up, but yours covers most of the tricks :)

A couple of extra things I ended up doing were:

1) Using a lower-res texture to modulate the high-res raymarched density, this gives you control over the overall macro shape of the clouds and allows you to transition between LOD better (i.e. as you move from ground level up to space you can lerp between the raymarched renderer & just rendering the low-res 2D texture without any jarring transition.

2) Using some atmospheric simulation to colorize the clouds for sunrise/sunset. To make this performant I had to build some lookup tables for the atmospheric density at given angles of the sun.

3) Altering the step size of the raymarch based on density, I took this from the Horizon Zero Dawn developers where they have a coarse raymarch and as soon as they get a dense enough sample they step back and switch to a higher res step until the density hits zero again.

Re: Real-time dreamy Cloudscapes with Volumetric Raymarching

#9
post #5
post #4

very nice tutorial. If I can make one suggestion is to write the shaders in a GLSL file format (i.e.: .vs, .fs) then just get the text value from it; that way you can get your editor to highlight the GSLS syntax, which is pretty helpful when dealing with complex shaders. this not, by any means, the best way of doing it, but I felt it was a bit easier writing GLSL code. https://github.com/victorqribeiro/3Dengine/blob/…

> .vs, .fs Is that like a Unity or Unreal standard? The thing I'm familiar with is a single .glsl with a void fragment() and void vertex() etc. in it

While I was trying to learn computer graphics I came across those extensions. I find them easy to understand, cause you know what is in each file and your editor can understand the syntax, making it easier to spot mistakes, like `1. instead of 1` when the program expects as float.
Post reply on HN