2017-04-18 1 views
3

refpages는 "지정된 텍스처 좌표에 가장 가까운 네 개의 텍스처 요소의 가중 평균을 반환합니다."라고 말합니다. 얼마나 정확하게 가중치를 부여합니까? 그리고 3D 텍스쳐는 보간 (interpolation)이나 그 이상을 위해서 4 텍셀만을 사용합니까? 2D 텍스처GL_LINEAR은 정확히 어떤 알고리즘을 사용합니까?

+3

외부 관찰자로서, 나는 그것이 단지 2D 선형 보간이라고 추측 할 것이다. –

+0

@OliverCharlesworth 쌍 선형입니다 ... – Spektre

답변

1

는 바이 리니어 보간 그래서 3X 보간법 수단 사용한 시료 4이다. 가중치는 목표 텍셀의 4 개 이웃에 대한 표준화 된 거리입니다.

(s0,t0)=(0.20,0.30) 
(s0,t1)=(0.20,0.35) 
(s1,t0)=(0.25,0.30) 
(s1,t1)=(0.25,0.35) 

가중치는 다음과 같습니다 :

ws = (s-s0)/(s1-s0) = 0.2 
wt = (t-t0)/(t1-t0) = 0.4 

그래서 선형 보간의 textels에서이

그래서 예를 들어, 당신은

(s,t)=(0.21,0.32) 

에서 텍셀하지만 질감 가까운 텍셀 좌표를 가지고 싶어 s 방향

c0 = texture(s0,t0) + (texture(s1,t0)-texture(s0,t0))*ws 
c1 = texture(s0,t1) + (texture(s1,t1)-texture(s0,t1))*ws 

최종적 t 방향 363,210 : s,t에서 texture(s,t) 복귀 텍셀 색이 정확한 텍셀에 대응하고 c 좌표 동안

c = c0 + (c1-c0)*wt 

최종 컬러 보간 텍셀이다.

현실에서는 s,t 좌표에 텍셀 단위로 변환하는 텍스처 해상도 (xs,ys)가 곱 해집니다. 그 후 s-s0t-t0은 이미 정규화되어 있으므로 s1-s0t1-t0으로 나누지 않아도됩니다. 부스는 1과 같습니다. 그래서 :

s=s*xs; s0=floor(s); s1=s0+1; ws=s-s0; 
t=t*ys; t0=floor(t); t1=t0+1; wt=t-t0; 
c0 = texture(s0,t0) + (texture(s1,t0)-texture(s0,t0))*ws; 
c1 = texture(s0,t1) + (texture(s1,t1)-texture(s0,t1))*ws; 
c = c0 + (c1-c0)*wt; 

내가 전에 3D 텍스처을 사용한 적이 있지만,이 경우에 8 textels를 사용하고이 트라이 선형 보간법이중 선형 보간법 단순히이 가까운 질감을 호출되고 바이 리니어 보간 각을 계산하고 단지

u=u*zs; u0=floor(u); u1=u0+1; wu=u-u0; 
c = cu0 + (cu1-cu0)*wu; 
그럼 u에 기초하여 선형 보간에 의해 최종 텍셀 동일한 방법으로 좌표 산출 zs 텍스처의 카운트 53,691,363,210

, cu0바이 리니어 u0에서 텍스쳐 보간u1cu1에서의 결과이다. 이 같은 원칙이 ...

모든 좌표

0.5 텍셀에 의해 offseted되었을 수 있으며 해상도 곱셈이 클램프 설정에 따라 xs-1 대신 xs 수행 할 수 있습니다 ... 밉맵에도 사용된다
관련 문제