2012-01-23 5 views
3

후 처리 효과를 수행 할 수 있도록 여러 렌더 대상에 다각형 장면을 렌더링하고 있습니다. 그러나 프래그먼트 쉐이더에서 설정 한 값은 픽셀 쉐이더에 정확하게 반영되지 않는 것 같습니다.쉐이더에서 왜곡 된 픽셀 값을받는 WebGL 렌더링 버퍼

지금 파이프 라인은 다음과 같다 :

  • 화면으로 화면 크기의 쿼드로 버퍼 렌더링 중간 버퍼
  • (아래, 단순한 쉐이더 사용) 기본적인 다각형 렌더링.

I가 중간 버퍼를 참조 WebGL에 검사기 (http://benvanik.github.com/WebGL-Inspector/) 사용하고 (gl.createFrameBuffer()를 사용하여 작성).

gl_FragColor = vec4(1, 0, 0, 0.5); 

그리고이 내 그리기 전에 전화 :

gl.disable(gl.BLEND); 

나는이에 픽셀을 만들 기대, 이런 식으로 뭔가를 다각형을 그릴 때

나는 아주 간단한 조각 쉐이더가 정확하게 (255,0,0,128)의 값을 가지는 버퍼. 실제로는, (255,0,0,64)의 값을 가지는 픽셀을 생성한다.

프로그램이 상당히 크고 엉성하기 때문에 답변이 즉시 나타나지 않으면 구체적인 내용으로 게시물을 업데이트하겠습니다.

감사합니다.

+0

픽셀의 알파 값이 무엇인지 어떻게 알 수 있습니까? 이 픽셀 값을 쓰고 있다고 당신은 무엇을 그리기 시작합니다. –

+0

아마 조금 더 많은 정보가 필요 하겠지만, 즉시 생각해보십시오. 안티 앨리어싱을 사용할 수 있습니까? 그렇다면 샘플링중인 픽셀이 다각형의 가장자리에있는 경우 예상보다 낮은 값으로 블렌드 될 수 있습니다. – Toji

+0

@ NicolBolas : WebGL Inspector를 사용하여 직접 픽셀의 값을 검사하고 최종 렌더링에서 화면 값을 샘플링하고 후속 처리 단계에서 그 동작을 관찰했습니다. 이 값은 위의 간단한 조각 쉐이더가있는 간단한 폴리곤에서 프레임 버퍼로 그려지고 프레임 버퍼는 스크린 버퍼에 렌더링됩니다. – Ipsquiggle

답변

1

premultiplyAlpha를 true로 설정 했습니까? 그걸 보면서 가장 먼저 떠오르는 것이 이상한 알파 값입니다.

+0

나는 이것이 A 값이 아닌 RGB 값으로 엉망이 될 것이라고 기대하지만, 그것을 기꺼이 점검 할 것이다. – Ipsquiggle

관련 문제