2012-03-22 8 views
1

sampler2D는 물론 image2D와 동일한 텍스처를 사용하는 것이 합법적입니까 (잘 정의되어 있습니까?)?OpenGL 4.2는 이미지와 샘플러와 동일한 텍스처를 사용합니다.

현재 GLSL 셰이더 내에서 imageLoad() 및 imageStore()를 사용하여 image2D에서 쓰고로드합니다. 그러나, 일부 밉맵 수준의 질감 (또한 쓰지) 읽고 싶습니다 있지만 imageLoad에 의해 지원되지 않습니다 (나는 각 mipMap 수준을 별도의 image2D로 바인딩해야 할 것이라고 생각하지만 사용할 수있는 이미지 단위의 양은 상당히 제한적 임). 그래서 내 질문에, 여부를 textureLod() 함께 사용하려면 sampler2D 같이 imageStore() image2D 같이 사용하는 동일한 질감을 사용하려면 괜찮아?

답변

1

법적 고지? 예. 잘 정의 되었습니까? 그것은 당신이 그들과 무엇을하고 있는지에 달려 있습니다.

이미지에 쓰고 텍스처에서 밉맵을 샘플링한다고 말합니다. 당신이 쓴 동일한 밉맵에서 샘플링하고 있습니까? 그렇다면 ... 그건 문제가 될 것입니다. 텍스처 액세스는 coherant 일 필요는 없으므로 이것이 작동한다는 보장은 없습니다. 명시된 CPU 없이는 서면 작성 시간과 샘플링 시간 사이에 호출이 이루어지지 않습니다. CPU 개입이 필요하기 때문에 동일한 쉐이더 내에서 처리 할 수 ​​없습니다.

당신 작성하지 밉맵에서 샘플링을 방지하기 위해 보호 기능을 제공 (에 의해 "당신이"내 말은 "당신이 사용하고있는 모든 쉐이더 호출이"), 그 다음 모든 것이 잘되어야합니다. textureLod을 사용하거나 텍스처 또는 유사한 BASE_LEVEL을 설정하는 것이 좋습니다.

+0

현재 밉맵을 전혀 사용하지 않습니다. 나는 image2D와 같은 텍스쳐를 sampler2D로 사용하려고한다. (imageLoad와 imageSave를 사용하기 전에는 texelFetch로 imageLoad를 반환하고 싶다.) 하지만 샘플러에서 texelFetch를 사용하면 (이전에 이미지의 imageLoad와 동일한 좌표로) 다음 검정색으로 표시됩니다. – user1282931

+0

@ user1282931 : "그게 문제가 될"부분을 이해하지 못 했습니까? 내가 너를 위해 그것을 철자하게하자. 너는 할 수 없다. 실제로 작동하기 때문에'imageLoad'를 사용하십시오 (적절한 메모리 장벽이 있다고 가정하면). –

+0

한 번에, 나는 결코 같은 텍셀에서 읽고 쓰지 않습니다. 나는 언제나 오직 특정 픽셀을 읽거나 쓸 것입니다. – user1282931

관련 문제