uniform vec2 u_resolution; uniform sampler2D u_texture; uniform vec2 u_points[32]; uniform int u_numAreas; uniform vec2 u_dragVectors[8]; uniform float u_distortionStrengths[8]; varying vec2 vUv; void main() { vec2 texCoord = vUv; // 디버그: 영역 표시 for (int i = 0; i < 8; i++) { if (i >= u_numAreas) break; // 포인트를 픽셀 좌표로 변환 vec2 p0 = u_points[i * 4 + 0] * u_resolution; vec2 p1 = u_points[i * 4 + 1] * u_resolution; vec2 p2 = u_points[i * 4 + 2] * u_resolution; vec2 p3 = u_points[i * 4 + 3] * u_resolution; vec2 pixelCoord = vUv * u_resolution; // 경계 상자 체크만 vec2 minP = min(min(p0, p1), min(p2, p3)); vec2 maxP = max(max(p0, p1), max(p2, p3)); // 영역 안에 있으면 빨간색으로 표시 if (pixelCoord.x >= minP.x && pixelCoord.x <= maxP.x && pixelCoord.y >= minP.y && pixelCoord.y <= maxP.y) { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // 빨간색 return; } } // 영역 밖은 원본 이미지 gl_FragColor = texture2D(u_texture, texCoord); }