Light categories and Shader Mixer?
Mustakettu85
Posts: 2,933
Hi everyone,
Is there a way to restrict, say, volume or surface shaders made in Shader Mixer to lights belonging a specific category only? It's trivial when writing code "from scratch", but I can't seem to figure it out if it's ever possible with Shader Mixer.
Comments
There's a RayType brick, will that do the job?
No Richard, unfortunately no, raytype is for another thing. The way category support is done in code is in a parameter passed to illuminance(). So you write, for example:
I am more interested in volume shaders, though, because it is much more difficult to write good volume code (there is actual math needed). So I would love to be able to use Shader Mixer volumes, but have light categories working for them (so as to only have the lights I need affect the volume, like AoA did for his shaders, it's much faster that way).
When I click "show advanced" on volume bricks like Ray Marcher or Smoke, they will accept the shading point P and view vector I, but nothing like the category.
I was hoping there may be some workaround for that.
I don't understand, isn't it possible to write your illuminance function in some ShaderBuilder macro, export it, and import it as a custom brick in Shader Mixer?
In theory, it might be possible. I just never tried.
But, you see, when it comes to my own illuminance() loops, I don't need Shader Mixer. I write all my surface and light shaders in RSL and use Shader Builder to help import them into DS (although I could well write all those helper scripts by hand, it's just too tedious).
I am not good enough to write meaningful volumes, though. I wanted to use the ones already done in Shader Mixer. It's probably one of the very uses I actually see in Shader Mixer for myself (I sound sooo darned haughty and posh now, right?).
In theory, it might be possible. I just never tried.
But, you see, when it comes to my own illuminance() loops, I don't need Shader Mixer. I write all my surface and light shaders in RSL and use Shader Builder to help import them into DS (although I could well write all those helper scripts by hand, it's just too tedious).
I am not good enough to write meaningful volumes, though. I wanted to use the ones already done in Shader Mixer. It's probably one of the very uses I actually see in Shader Mixer for myself (I sound sooo darned haughty and posh now, right?).
I just wondered, because in Shader Mixer's 'Volume repository' (on DS 4.7), I see four bricks: Depth Cue, Ray Marcher, Simple Fog and Smoke. In Shader Builder's sample catalog, there are two volume shaders: RI:DepthCue_Simple and RI_Fog_Simple, with simple macros that can be edited. But I don't know If they match the first and third of Shader Mixer's bricks...
I just remembered this fog shader in Renderman docu:
https://renderman.pixar.com/resources/RPS_17/atmosphereAndInteriorShaders.html
I though it may interest you.
Stuff along the line of those simple depth cue and "fog" shaders is as far as I can go writing "volumes" =) These aren't true ray marching stuff = they will not respond to lights. And thank you for the PRMan link - I believe I have experimented with making another freely available cousin of this shader work in DS (noisysmoke.sl), but somewhere I keep doing something wrong...
There is even a dedicated library in 3Delight Studio Pro these days that should help with writing volumes, but I don't think it´s available for the DS-bound 3Delight builds.