1
저는이 셰이더 세계에서 새로운 기능을 시도해보고 싶습니다. 다음과 같이하고 싶습니다.
마우스 주위의 특정 반경에서 배경의 텍스처가 10 ° 회전해야합니다. 마우스 좌표는 절대 값이므로 좌표를 정규화해야하므로 텍스처의 올바른 공간을 찾을 수 있습니다. 그러나 어떻게 든 이것이 올바르게 작동하지 않습니다. 회전 작동하지만 약간의 오프셋 색 정보를 얻을.GLSL 마우스 입력 표준화
나는이 문제가 normalize(mouse)
이라고 생각하지만이 일을 올바르게 수행하는 방법을 모른다. 여기에 쉐이더가 있습니다 :
uniform sampler2D tex0;
uniform vec2 mouse;
void main() {
vec2 pos = vec2(gl_FragCoord.x, gl_FragCoord.y);
if (distance(pos, mouse) < 90.0) {
vec2 p = gl_TexCoord[0].st;
vec2 m = normalize(mouse);
p.x = m.x + (cos(radians(10.0)) * (p.x - m.x) - sin(radians(10.0)) * (p.y - m.y));
p.y = m.y + (sin(radians(10.0)) * (p.x - m.x) + cos(radians(10.0)) * (p.y - m.y));
gl_FragColor = vec4(0.0, m.y, 0.0, 0.0);
gl_FragColor = texture2D(tex0, p);
}
else {
gl_FragColor.rgb = texture2D(tex0, gl_TexCoord[0].st).rgb;
gl_FragColor.a = 1.0;
}
}
저는 이것을 위해 사용하고 있습니다.
mShader.uniform("mouse", Vec2f(m.x, 682 - m.y));
감사합니다.
네 말이 맞아. 고맙습니다. 완벽하게 작동합니다. – Philip