현재 처리중인 조각 이외의 색상을 변경하려면 GLSL 조각 셰이더를 설정해야합니다. 그게 바람직하지 않을 수도 있기 때문에, 나는 아주 짧은 맥락을 제공 할 것이다.GLSL을 통해 인접 조각 색상 설정
프로젝트는 렌더 패스를 사용하여 주어진 모델이 텍스처 맵의 UV 좌표에 해당하는 고유 한 색상으로 FBO에 그려집니다. 그런 다음이 색상을 샘플링하고 이미지 좌표로 변환하여 모델에 대한 텍스처 맵을 카메라에 표시되는 것을 기반으로 업데이트 할 수 있습니다. 본질적으로 :
Render model to FBO
For each FBO pixel
1. sample secondary texture based on FBO pixel position
2. convert color at current pixel to image coordinate for the model's texture map
3. update model's texture with sampled secondary texture at calculated coordinate
End loop
문제는 현재 구현이 매우 CPU 바인딩되어 있기 때문에 FBO 밖으로 픽셀을 읽은 다음 조작하는 것이 문제입니다. 이상적으로, 이미 프래그먼트 쉐이더에서 작동 할 프래그먼트의 색상이 있으므로, 마지막 몇 단계 만 진행하여 GPU에서 모든 것을 유지하고 싶습니다.
내가 겪고있는 특정 문제는 조각 쉐이더가 처리하지 않는 조각의 색상을 설정하는 방법 (또는 가능한 경우)을 알 수 없다는 것입니다. 여분의 큰 FBO를 사용하여 작업 할 수없고 색상을 설정하려는 조각을 오프셋하는 경우 텍스처에 직접 쓰는 작업을 수행 할 수 있습니까?
도움/조언을 크게 듣습니다. 감사!
음 ... 아주 재미있는 생각입니다. Tommy의 접근법은 내가 이미 구현 한 것에 더 가깝기 때문에 먼저 그 장면을 제공 할 것입니다. 나는 또한 이것을 시도해 볼 수도 있습니다. – Xenethyl
@ Xenethyl. 나는 당신의 임무를 완전히 이해하지 못했을 수도 있지만 내가 본 것으로부터 - 분산 된 방식은 @ 토미가 설명하는 방식으로 구현 될 수 없다. 따라서 그의 아이디어가 당신의 필요에 맞다고 생각한다면, 물론 그걸로 나아갈 수 있습니다. 왜냐하면 그것은 내 것이 훨씬 간단하기 때문입니다. – kvark
오늘 밤 저녁 식사 후 이것에 대해 생각한 후에 나는 탁구 패스를하는 것이 어떻게 내 문제를 해결하지 않는지 깨닫기 시작했습니다. 귀하의 솔루션이 현재의 설정에 적용되는지 여부는 모르겠지만 토미가 논의했던 것보다 정확하다고 생각합니다. 지금은 이것을 허용 된 것으로 표시했습니다. 내 오해를 지적 해 주셔서 감사합니다. – Xenethyl