It’s been since 2006 that I wrote my last actual HLSL shader. A few hardware generations on I’ve started dabbling in shaders again.
Main motivation is probably my new job in Games. Where VFX and it’s mostly rigid offline-render pipeline never spawned much of a sensation of being able to experiment with it’s technologies, it just seems more accessible to just rip open shadertoy and marvel in the little snippets of art that are being spawned from often even littler snippets of code. Well and then open Unity and just start chiseling away on something myself.
Subject #1 would be water. Ocean surfaces, water surface interactions and the like.
Started with very basic Gerstner Waves and as I’m very much at home in it, I started with VEX and Houdini.
This is just a viewport capture, but I was quite alight with the fast results. Teaching VEX definitely pays off, I almost know what I’m doing now!
Well here the same as an Unlit Shader in Unity.
I did not spend all that much time tweaking this to be actually pretty. But conceptually this is something I might make use for some actual project in the nearer future.
Now Oceans somewhat sorted, I was further interested in actual surface water interaction. First thing that has been recommended to me was using Wave Particles, an old concept, but still very often used.
I only got around writing this in VEX. Particles collide so far only with a square container and the displacement function needs some improvements. But overall I can see why this could come in handy, especially for limited use-cases as puddles or swimming, where there is a limited range the waves need to carry and a simple boundary to work with.
Well this were the journey into wet has concluded so far. I’ll post more when I have produced some more results.
Due to my day job, I’m somewhat of a Houdini power user. Considering that, it’s quite late that I got to actually play with Houdini Engine for Unity. Sadly it’s just not a topic in VFX – yet.
But finally I’ve started chipping away on a prototype for a new game that requires dungeon creation and so I got around to crossing the bridge from SOPs into Unity via the Houdini Engine.
Here a small demo video:
This system is set up as a single HDA, which is driven by a bunch of input curves. The curves come straight out of unity and allow to interactively adapt the level creation.
From the curves – with SOPs lofting, booleans and a bit of wrangling – I generate the dungeon. Also setting the attributes for connecting unity materials directly. This is my main concern, as I really want to just get my world set up with a single click. I suppose I could also run a post processing script, seen the hooks for that on the Unity HDA asset.
Works like a charm! I’m sure there will be a good use for this.
I’ve been working with a principle called Vertex Animation Textures lately. In essense this is about using texture maps to drive animation of a non dynamic number of mesh entities in a 3D scene.
I used the Houdini Game Development Tools that allow you to export a set of packed geometries into said images. The package also comes with a unity shader, that reads those textures and applies the transformation on vertex level.
So I created a houdini POP sim based on some a bit terrible but free motion capture animation I found on TurboSquid. It too a not unnerving amount of fiddling with packed transforms to make it all work and stick, but once it all was in Unity, it was fairly straightforward to work.
I’ve to say, it’s a pretty neat trick to get some very complex animation of a LOT of moving parts into real-time rendering at pretty much the cost of an additional two texture lookups.
I played with this for a while with the outcome of a short piece about all the money in the word.