2014-03-06 9 views
0
쉐이더가 원시 가장자리에 도달하고 그것을 어딘가에

GLSL : 화면의 질감 샘플링

color=texture2D(texture, vec2(texCoord.x+some_positive_value, texCoord.y)); 

있을 때 어떻게됩니까

오프? 내 말은, 어떤 가치가 color 같은 전화, 투명 검정 (0,0,0,0)에 들어가는거야? 이 작업을 수행하는 중에 오류가없는 것 같지만 실제로 사용하기에 안전한지 묻고 시각적으로 유물이 있는지 확인해야합니다. 나는 블러 쉐이더를 만들고 있는데,이 튜토리얼에서는이 방법을 사용하여 인접 픽셀에 액세스합니다.

답변

2

어떤 일이 발생하는지 정의하십시오. 당신이 쫓고있는 것은 "texture wrapping"

그러나 아직도 블러 자체에는 문제가 있습니다. 텍스처 밖의 데이터가 없기 때문에 랩 모드를 적용하거나 (불필요한 부분은 GL_CLAMP_TO_EDGE 일 것입니다) 불완전 함을 받아들이거나 입력을 흐리게 처리하여 약간 더 크게 렌더링하십시오.

가능한 결점은 다음과 같습니다. 나는 가장자리를 넘어서 움직이기 전과 후에 김프에서 원을 흐리게 만들었다. 센터를 채우면 차이점을 더 잘 볼 수 있습니다. 경계선 밖에서 색상이 어떻게 계속되는지에 대한 흐림 연산의 가정으로 인해 발생하는 변형 된 네 번째 원에 유의하십시오.

Blur imperfections at image borders. Using clamp to edge.

그냥 그래서 당신은 texture2D (이 정상화 제로 하나 텍스처 좌표 대신 픽셀 좌표를 취 있습니다) texelFetch으로 우회 할 수 있습니다 필터링을 적용 알고있다.

+0

감사합니다. 이것은 내가 알고 싶었던 것입니다. 이것은 윈도우에 맞게 단일 쿼드에 후 처리에 사용되므로 1.0/ScreenWidth를 사용하여 단위 폭을 가져옵니다. – Vladivarius