Archived post by mysterypancake

it kind of sounds like an audio compressor, it gave me a similar idea to toadstorm you could take the min and max of several neighbours, then blur it, then normalize to that range

like a moving average with a rectangle window except min/max instead (en.wikipedia.org/wiki/Moving_average)

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20261604/11/26/2026-04-11_14-03-42.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20261604/11/26/normalize_windowed.hiplc

Archived post by paqwak

Made an HDA, with dynamic iteration and a simple global water level offset. Wish I could easily implement a connectivity map so dry level could be randomize or controlled by a mask per lake, but that’s for an other day.

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20264304/04/26/image.png
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20264304/04/26/sop_heightfield_BasinFlood.1.0.hda
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20264304/04/26/BasinFloodingWip_18.hip

Archived post by mysterypancake

i put some info about worksets in this section github.com/MysteryPancake/Houdini-OpenCL?tab=readme-ov-file#worksets

the vellum thing above also uses worksets/graph color

there’s a few things that can be changed before running the kernel one is the number of workitems by using worksets as Jake said “`cpp // In VEX, runs the kernel 1 time with at least 6 workitems i[]@offsets = {0}; // this doesn’t affect any IDs but it gets passed as a kernel argument I[]@sizes = {6}; “` “`cpp // In OpenCL, the offset and size is passed from the VEX array // Note get_global_id(0) still starts at 0 even with multiple worksets kernel void kernelName( int color_offset, // offset number from i[]@offsets int color_size, // size number from i[]@sizes (not rounded up) … ) { … } “` the other is the [local workgroup size](github.com/MysteryPancake/Houdini-OpenCL?tab=readme-ov-file#changing-the-local-workgroup-size) “`cpp // Force the local workgroup size to 48 __attribute__((reqd_work_group_size(48, 1, 1))) @KERNEL { // This should print “Local size = 48” printf(“Local size = %d”, get_local_size(0)); } “`

The number of workitems it gives you always rounds up based on the local workgroup size

so if you did `i@[]sizes = {4}` but `get_local_size(0)` was 12, it gives you 12 workitems instead

this usually leads to [extra workitems you need to skip over](github.com/MysteryPancake/Houdini-OpenCL?tab=readme-ov-file#bounds-checking)

Archived post by sniperjake945

Id have to try it but potentially with the eikonal cop

Gimme like 10 and I can see if the idea works

im sure you can have it be one sided with some clever weighting but thats an exercise for another time. but this is all cops. you just use a black circle on a white background (where the white value is super high) as a source point/the initial distance and then use the letter outline as the speed parameter on the eikonal node. It’s worth noting that doing this with geometry is of course going to be way more controllable. But this way avoids any kind of geo

Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20262203/27/26/cops_carve.mp4
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20262203/27/26/cops_carve_JR.hip