summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorNaveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com>2023-11-11 12:23:57 +0000
committerNaveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com>2023-11-11 12:23:57 +0000
commitd2aa63f6a860204df9b43cf4ba0e6f61492a7306 (patch)
treeac91eb5392ecabdb30fab74b3fe4d46fd00d1ebe /virtual-programs
parentSupport non-uniform image scaling (diff)
downloadfolk-d2aa63f6a860204df9b43cf4ba0e6f61492a7306.tar.gz
folk-d2aa63f6a860204df9b43cf4ba0e6f61492a7306.zip
scale before rotating
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/display/image.folk16
1 files changed, 8 insertions, 8 deletions
diff --git a/virtual-programs/display/image.folk b/virtual-programs/display/image.folk
index de0408af..b654f846 100644
--- a/virtual-programs/display/image.folk
+++ b/virtual-programs/display/image.folk
@@ -5,17 +5,17 @@ On process "display" {
dict set ::pipelines "image" [Gpu::pipeline {sampler2D image vec2 imageSize
vec2 pos float radians vec2 scale
fn rotate} {
- vec2 a = pos + scale * (rotate(-imageSize/2, -radians));
- vec2 b = pos + scale * (rotate(vec2(imageSize.x, -imageSize.y)/2, -radians));
- vec2 c = pos + scale * (rotate(imageSize/2, -radians));
- vec2 d = pos + scale * (rotate(vec2(-imageSize.x, imageSize.y)/2, -radians));
+ vec2 a = pos + rotate(scale*-imageSize/2, -radians);
+ vec2 b = pos + rotate(scale*vec2(imageSize.x, -imageSize.y)/2, -radians);
+ vec2 c = pos + rotate(scale*imageSize/2, -radians);
+ vec2 d = pos + rotate(scale*vec2(-imageSize.x, imageSize.y)/2, -radians);
vec2 vertices[4] = vec2[4](a, b, d, c);
return vertices[gl_VertexIndex];
} {fn invBilinear fn rotate} {
- vec2 a = pos + scale * (rotate(-imageSize/2, -radians));
- vec2 b = pos + scale * (rotate(vec2(imageSize.x, -imageSize.y)/2, -radians));
- vec2 c = pos + scale * (rotate(imageSize/2, -radians));
- vec2 d = pos + scale * (rotate(vec2(-imageSize.x, imageSize.y)/2, -radians));
+ vec2 a = pos + rotate(scale*-imageSize/2, -radians);
+ vec2 b = pos + rotate(scale*vec2(imageSize.x, -imageSize.y)/2, -radians);
+ vec2 c = pos + rotate(scale*imageSize/2, -radians);
+ vec2 d = pos + rotate(scale*vec2(-imageSize.x, imageSize.y)/2, -radians);
vec2 p = gl_FragCoord.xy;
vec2 uv = invBilinear(p, a, b, c, d);
if( max( abs(uv.x-0.5), abs(uv.y-0.5))<0.5 ) {