2011-07-05 6 views
0

랜덤 방식으로 텍스처 데이터를 효율적으로 가져올 수있는 방법이 있습니까? 즉, 룩업 테이블로 텍스처를 사용하고 싶습니다. 요소에 대한 임의 액세스가 필요합니다. 따라서 나는 그것을 임의의 방식으로 샘플링 할 것이다. 완전히 잃어버린 원인입니까?OpenGL ES 2.0에서 효율적인 랜덤 텍스처 샘플링

답변

2

무작위 액세스는 GLSL의 기본 기능입니다. 예 : 당신이 밖으로 버텍스 쉐이더에서보다는 픽셀 쉐이더에서 직접 샘플 위치를 계산 한 경우

vec2 someLocation = ... whatever you like ...; 
vec4 sampledColour = texture2D(sampler, someLocation); 

하드웨어에 따라, 텍스처를 읽고 더 많은 비용을 수 있으며, 그들이 변화하는 자동 보간 될 수 , 그러나 그것은 당신이하는 일의 예측 가능성 감소와 관련된 불변의 하드웨어 비용 일뿐입니다.

+0

예, 무작위 액세스가 가능합니다. GPU로 임의 액세스를 읽은 것에서 CPU를 사용하는 것보다 훨씬 문제가 많아서 패널티를 최소화하는 일반적인 방법이 있는지 궁금해졌습니다. 임의 액세스. –

+1

플랫폼이 무엇인지 잘 모르겠지만 추세에 대한 나의 이해는 이것이 지금보다 더 중요하게 사용된다는 것입니다 (휴대 전화 유형의 장치가 곡선의 초기 지점에 있다는 경고와 함께). 왜냐하면 GPU가 여러 조각에 대해 병렬 적으로 분명히하고 쉽게 수행 할 수있는 작업과 모든 단일 작업에 대해 개별적으로해야하는 작업을 수행하기 때문입니다. 그러나 GPGPU에 대한 추진으로 모든 사람들이 스마트 액세스 패턴 추측을위한 전략 측면에서 좀 더 많은 CPU를 얻을 수있게되었습니다. 따라서 실적에 영향을 미칠 수는 있지만 걱정할 필요는 없습니다. – Tommy

1

임의의 값을 포함하는 셰이더에 다른 텍스처를 전달하고 그로부터 샘플을 가져올 수 있습니다. 그것은 각 텍스쳐 좌표에 대해 동일한 랜덤 값을 제공 할 것입니다. 그러나 원하는 것이 없다면 항상 각 프레임을 업데이트 한 균일 한 시드로 좌표를 곱할 수 있습니다.

+0

죄송합니다. 나는 그런 뜻이 아니었다. 나는 무작위 값을 생성하는 것에 관심이 없다. 내가 말한 의미는 직렬화 된 방식이 아닌 임의의 방식으로 텍스처 데이터에 액세스 할 가능성이 가장 높다는 것입니다. –

관련 문제