2012-11-21 6 views
1

텍스처와 사각형이 있습니다.텍스처 좌표가있는 텍스처 부분을 반복하십시오.

그 사각형에 텍스처를 반복하고 싶습니다. 하지만 그 중 일부.

X와 Y에 0.25에서 0.75까지 텍스처 좌표를 사용하고 2 번 반복한다고 가정 해 보겠습니다.

나는에 사각형의 꼭지점의 좌표를 설정하는 경우 :

0.25 0.75에 두 번에서 텍스처를 반복하지 않지만, 이는 0.25에서 1.01.0에서 0.25에 텍스처를 생성합니다
(0.25, 0.25) 
(0.25, 0.75 * 2) 
(0.75 * 2, 0.25) 
(0.75 * 2, 0.75 * 2) 

다른.

텍스처를 변경하지 않고 일부만 사용하고 그 부분 만 반복하여 목표를 달성하는 방법은 무엇입니까?

참고 : 사각형에 정점을 추가하고 싶지 않습니다. 아주 쉽게

+1

코드를 작성할 시간이 없기 때문에 주석을 달았지만 픽셀 쉐이더에서 이것을 쉽게 수행 할 수 있어야합니다. 제공된 u, v 텍스처 좌표를 샘플링하려는 범위에 tranform하여 조직... – jcoder

답변

2

그 프래그먼트 쉐이더 달성하기

float scale; 
float offset; 

sampler2D baseMap; 

struct PS_INPUT 
{ 
    float2 Texcoord : TEXCOORD0; 

}; 

float4 ps_main(PS_INPUT Input) : COLOR0 
{ 
    float2 tc = fmod(Input.Texcoord, scale) + float2(offset, offset); 
    return tex2D(baseMap, tc); 

} 

쉐이더는 대각선을 따라 대칭이므로 검색 창으로 이동한다. 그러나 각 텍스처 좌표 구성 요소에 별도의 오프셋 및 비율을 적용한 다음 창을 완전히 자유롭게 움직일 수 있습니다.