hip + some snail footage
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255511/29/25/COPs_Block_Matching_03.hiplc
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255511/29/25/block_matching.zip
hip + some snail footage
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255511/29/25/COPs_Block_Matching_03.hiplc
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255511/29/25/block_matching.zip
i def think there’s potential for that typa shit e.g. these 6 million particles simulating and rendering at 60fps <:tide_pod:415308365942620161> with a fat glow on top even
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255811/25/25/Ls_Cop3GPUparticles_v01.smal.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255811/25/25/Ls_Cop3GPUparticles_v01.hipnc
16K map is 512MB per 32-bit channel; that’s 2GB for a single precision RGBA ‘buffer’ 8K map is 256MB per 32-bit channel; 1GB for a single precision RGBA ‘buffer’
Currently, all cop nodes cooks all of their outputs, just fyi
here is a simple implementation of adjacency aware blur running over texture seams.
“` #bind layer src? val=0 #bind layer &tmp val=0 #bind layer adjacency? val=0 #bind layer &blur
@KERNEL { if (@Iteration==0) { @tmp.set(@src); } else { float4 sum=(float4)(0); for (int i=-@pixels; i<=@pixels;i++) { float2 uv= (@adjacency.bufferIndex((int2)(@ix+i,@iy)).xy); float4 px= (@blur.bufferSample(uv*(float2)(@xres,@yres)-(float2)(0.5f,0.5f))); sum+=px; } sum/=@pixels+@pixels+1;
@tmp.set(sum); } }
@WRITEBACK {
float4 sum=(float4)(0); for (int i=-@pixels; i<=@pixels;i++) { float2 uv= (@adjacency.bufferIndex((int2)(@ix,@iy+i)).xy); float4 px= (@tmp.bufferSample(uv*(float2)(@xres,@yres)-(float2)(0.5f,0.5f))); sum+=px; } sum/=@pixels+@pixels+1;
@blur.set(sum); } “`
bind “pixels” as int in the bindings tab. src and adjacency as inputs blur and tmp as outputs. enable writeback and include iterations.
you need the adjacency rasterizer i made a while back for the adjacency input…
now this is a pretty dogshit blur implementation mostly as proof of concept but it does blur the image so there’s that.
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20253311/07/25/houdini_XnfFGtckSi.mp4
tidying up my desktop and remembered i had a go at smooth 3d colour correction a la discord.com/channels/270023348623376395/351975494947962882/1420903144707325953 didn’t take it too seriously because similarly to the “look at this RGB cube!!” tools in flame and that primatte thing that shows you the key in 3D it doesn’t actually work that well, combining multiple regular keys is really the way for surgical edits… maybe interesting for more gentle grading like the colour mesh tools baselight and resolve now have tho
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20251510/31/25/Ls_ColourBooper_v01.8mb.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20251510/31/25/Ls_ColourBooper_v01.hipnc
here’s the .hip file of the title cards for each new ‘chapter’ I used in my equinox presentation 🙂
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20254710/10/25/mmaammaaaaaaoooeeeoooo.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20254710/10/25/somecooltext.hip
maybe. here’s the .hip for the self regenerating patterns, some other small experiments in there too
if it still dont work lmk
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20255910/09/25/somerdfun.hip
alright here’s something – it uses a similar method to mmColorTarget but is mostly in SOPs, I think it would be quite awkward purely in COPs unless there’s python or expression access to pixel values now in 21.0… it can restore quite busted chart images like the left one back to ACEScg primaries and it’s fast enough to update as you drag the handles around <:tide_pod:415308365942620161> i realise i’ve done this in apprentice which wasn’t very clever of me but maybe an adult could adapt it to be a bit smoother anyway, maybe inside a COPs HDA
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20254609/23/25/Screenshot_2025-09-23_at_23.21.30.png
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20254609/23/25/Ls_MatrixFromChart_v01.hipnc
here is the contact sheet packer inside native copernicus context very hacky and very fast though
relies on couple of hacks: * access to time dependent source inside “simulated” block – so packing is basically frame by frame sim * “custom” Time Shift COP based on h21 python snippet
so how is this reliable i’m not sure
here is the hip (i cleaned up it a bit)
i wonder now if i can remove time dependency on time shift (though may be it’s just not possible and I need a stash after that)
hm, the above just leads me to an interesting conclusion
looks like `$F` (`hou.frame()` or `hou,time()`) are evaluated in simulated block context this is basically just one backdoor to inject dependency in block
it’s just one number but can be exploited already for example a packing variations of any op like this example where sdf shape dependent on frame. it’s still cumbersome but randomized contact sheet from *any* operator is quite possible
no, i think i got it wrong, here is what i got from analyzing evaluating path sorry if this is known, but i think it’s quite interesting for block programming
* Compiled block is baking block to apex graph. No expressions, all parameters are evaluated and baked – so no easy iteration and requires this hack of either layer with int or geometry with detail attribute (considering it has a feedback), parametrizing operators is very hard, at least for now, I guess in future sidefx adds additional evaluating context * Simulated block – _all_ expressions are evaluated, this is not an apex execution, it’s a live network. No need for iteration hack – iteration is `$F`. Way easier to parametrize (all expressions are “live”) but getting the result at X iteration is hacky, but easily solveable via Python COP and pulling layer at specific frame
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20253509/23/25/sheet.gif
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20253509/23/25/sheet-as-sim.hip
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20253509/23/25/image.png
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20253509/23/25/cop-frame-expression.hip
so anyways… the beautiful flow_projectnondivergentmultigrid can also be used to build a heightfield from a normalmap like so:
the name rolls of the tongue
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20250609/09/25/image.png