In this video, I show how to make a triangle grid using Affinity Photo's procedural texture filter.
Triangle Grid
var v0=vec2(rx*2/sqrt(3),ry+rx/sqrt(3))*a/h; var v=fraction(v0); var v1=vec3(v.x,v.y-v.x,1-v.y); var v2=vec3(1-v.x,v.x-v.y,v.y); var v3=v1*step(v.x,v.y)+v2*step(v.y,v.x)
Triangle Length
var v0=vec2(rx*2/sqrt(3),ry+rx/sqrt(3))*a/w; var v=fraction(v0); var v1=vec3(v.x,v.y-v.x,1-v.y); var v2=vec3(1-v.x,v.x-v.y,v.y); var v3=v1*step(v.x,v.y)+v2*step(v.y,v.x); length(v3)*2-1
Triangle Max
var v0=vec2(rx*2/sqrt(3),ry+rx/sqrt(3))*a/w; var v=fraction(v0); var v1=vec3(v.x,v.y-v.x,1-v.y); var v2=vec3(1-v.x,v.x-v.y,v.y); var v3=v1*step(v.x,v.y)+v2*step(v.y,v.x); max(v3.x,v3.y,v3.z)
Triangle Min
var v0=vec2(rx*2/sqrt(3),ry+rx/sqrt(3))*a/w; var v=fraction(v0); var v1=vec3(v.x,v.y-v.x,1-v.y); var v2=vec3(1-v.x,v.x-v.y,v.y); var v3=v1*step(v.x,v.y)+v2*step(v.y,v.x); min(v3.x,v3.y,v3.z)*2
Triangle or Isometric Graph Paper
var v0=vec2(rx*2/sqrt(3),ry+rx/sqrt(3))*a/w; var v=fraction(v0); var v1=vec3(v.x,v.y-v.x,1-v.y); var v2=vec3(1-v.x,v.x-v.y,v.y); var v3=v1*step(v.x,v.y)+v2*step(v.y,v.x); smoothstep(e1,e2,v3.x)*smoothstep(e1,e2,v3.y)*smoothstep(e1,e2,v3.z)
MNE#14 Triangular grid
https://youtu.be/dz6fg-Z0JKk?si=x8jbXOxclXRYduYG
The Book of Shaders seems to be offline
Procedural Textures Playlist:
https://www.youtube.com/playlist?list=PLPTJk1HIMN35WOCDXnoUB-l2_YVgJ8rHK
The Procedural Texture filter and related information can be found on Affinity Photo's website:
https://affinity.help/photo2/en-US.lproj/pages/Filters/filter_proceduraltexture.html
0:00 Introduction
1:00 Setting up the coordinate system
7:45 Examples using the triangle coordinate system
11:55 Conclusion