I tweaked the code a little more and put the layer by layer offsets back in. I have to say I am happier with these less dense results with offsets and where the frequency is constrained more. The selections below show stripes and chevrons, respectively. Note the skew method (rather than rotation, as mentioned in the last post), means some chevrons may end up as vertical stripes. The offsets are constrained to the same structure as the X translation for chevron and circle compositions (Left, OneThird, Centre, TwoThirds, Right positions).
I had in mind an exploration using horizontal and vertical stripes. These end up being very grid-like, but part of that is because the stripes themselves are not offset (where more background is visible), so the stripes fill the whole composition and are quite dense. Somewhat interesting, but even with only two layers they tend to me very dense. Maybe there should be a constraint so that the frequency of the layers are not similar… Also I’m not sure I want to have the chevrons skewed so much as rotated (so that the vertical stripes stay perpendicular to the horizontal stripes in chevrons). I’ll put back in the offset code and will post some of those results later today. Following are images showing the chevron and stripe render modes. I was unable to easily fix the circle rendering due to my misunderstanding of texture coordinates, which previously worked due to 1px tall images used to generate stripes of a single orientation.
I refined the code and added a random X offset from a fixed set of intervals. The code was also tweaked a little, but I think I would still like to see a greater range of frequencies.
Above is a selection of results from a sine-wave based stripe generator. This allows for few parameters to describe a wide variety of densities. Also, the gaps between stripes, their thickness, and the softness of their edges are parameterized; contrast and threshold parameters allow the sinewaves to become stripes of various widths with edges of various softness. All of these images are generated with 5 layers (one wave per layer). In these results the blur shader is disabled; any softness is due to the contrast parameter. I’ve included a few strong results below at full resolution…
Above is a selection of some explorations of chevrons after Noland and Mehring. I had to add an additional parameter for the angle of the chevrons; for the final implementation I’ll need to make sure all the rendering methods use the same number of parameters. There is also the issue of weighting; the parameters for each layer (stripe) are all equal, but the rendering method (and background colour) have a disproportionate effect on the final composition. This means I may need (if using an MLP) to repeat the number of parameters that represent render method and background colour to increase their weight. Following is a detail of one of the chevrons…
Mehring certainly enforces my interest in the sine-wave method of generating compositional elements (due to his emphasis on rhythm, musicality and repetition). His inverted ‘T’ compositions (like the one above) emphasize a central axis of symmetry and his work with chevrons encourages me to investigate chevrons.
I forgot that I had already written code to increase the amount of blur in a shader (written for my early grant applications years ago); I just had not tried to use very large blur amounts since I had not looked at that shader code! In the images above, the max blur is the whole width of the display (1920) so very soft and subtle gradients are possible. To emphasize this increased blur, I used only two layers on top of the background. The following image shows one of these subtle variations at full size.