From 37ccfee6ea7e27607b4a08fd44048d6ae8a189e2 Mon Sep 17 00:00:00 2001 From: Cristobal Sciutto Date: Fri, 27 Oct 2023 18:18:31 -0400 Subject: scale sampling --- virtual-programs/display/image.folk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/display/image.folk b/virtual-programs/display/image.folk index 55a283e0..7415b260 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 float scale fn rotate} { - vec2 a = scale * (pos + rotate(-imageSize/2, -radians)); - vec2 b = scale * (pos + rotate(vec2(imageSize.x, -imageSize.y)/2, -radians)); - vec2 c = scale * (pos + rotate(imageSize/2, -radians)); - vec2 d = scale * (pos + rotate(vec2(-imageSize.x, imageSize.y)/2, -radians)); + 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 vertices[4] = vec2[4](a, b, d, c); return vertices[gl_VertexIndex]; } {fn invBilinear fn rotate} { - vec2 a = pos + rotate(-imageSize/2, -radians); - vec2 b = pos + rotate(vec2(imageSize.x, -imageSize.y)/2, -radians); - vec2 c = pos + rotate(imageSize/2, -radians); - vec2 d = pos + rotate(vec2(-imageSize.x, imageSize.y)/2, -radians); + 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 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 ) { -- cgit v1.2.3