프래그먼트 셰이더를 사용하여 OpenGL에서 GL_TRIANGLES
과 같은 간단한 프리미티브의 가장자리를 부드럽게 만드는 데 가장 간단한 기술은 무엇입니까?셰이더를 사용하여 모서리를 기본 요소로 부드럽게하는 방법은 무엇입니까?
나는 GL_BLEND
컨텍스트 내에서 가장자리의 근접 정도에 따라 조각의 알파 값을 조절할 수 있다고 읽었습니다. 실제로 이것이 어떻게 효과적으로 달성 되는가?
프래그먼트 셰이더를 사용하여 OpenGL에서 GL_TRIANGLES
과 같은 간단한 프리미티브의 가장자리를 부드럽게 만드는 데 가장 간단한 기술은 무엇입니까?셰이더를 사용하여 모서리를 기본 요소로 부드럽게하는 방법은 무엇입니까?
나는 GL_BLEND
컨텍스트 내에서 가장자리의 근접 정도에 따라 조각의 알파 값을 조절할 수 있다고 읽었습니다. 실제로 이것이 어떻게 효과적으로 달성 되는가?
프리미티브의 가장자리는 앤티 앨리어싱을 사용하여 다듬을 수 있습니다.
OpenGL은 이미지의 하드웨어 가속 앨리어싱을 허용하기 위해 multisample buffers을 제공하지만 GPU의 전용 하드웨어 버퍼에 의존하기 때문에 모든 플랫폼에서이 기능을 지원하지는 않습니다. 또 다른 방법은 render your display to a texture using a FrameBuffer이며, 렌더링 된 텍스처는 Timothy Lottes의 Fast Approximate Anti Aliasing (FXAA) 쉐이더를 통해 전달됩니다.이 패스에는 단일 패스가 필요합니다.
일반적인 Android 기기에서 FXAA가 매우 느리게 실행됩니다. – keaukraine
멀티 샘플링 앤티 앨리어싱 –
이것에 대해 읽었지만 일부 하드웨어에서는 지원하지 않습니다. 이 기사에서 설명한대로 셰이더 내에서이 효과를 얻는 것이 가능하다는 것을 알았습니다. http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html 제공된 코드를 사용할 수없는 이유는 다음과 같습니다. 앨리어싱 된 곡선을 그리기 때문입니다. 임의의 다각형 모서리를 매끄럽게 만드는 데 사용할 수있는 방법을 찾고 싶습니다. –
블렌딩을 사용하여 모서리를 부드럽게 만들면 지오메트리를 뒤에서 앞으로 그려야합니다. 실용적이지는 않지만 실제로는 데스크탑 OpenGL에서 폴리곤 스무딩을 제거하기 전에 폴리곤 스무딩이 어떻게 작동 하는지를 설명합니다. 플랫폼 태그에서 OpenGL ES를 사용하고 있다고 가정합니다. 불행히도 OpenGL ES 2.0의 핵심은 멀티 샘플 렌더 버퍼가 아닙니다. 그러나 MSAA는 픽셀 쉐이더를 지원하는 하드웨어에서 꽤 표준 적입니다. 이것은 픽셀 쉐이더를 실행해야하는 횟수를 줄이기 위해 만들어졌습니다. 아마도 EGL 수준에서 노출 될 것입니다. –