3D그래픽2011. 9. 2. 14:44
Per-Fragment Lighting을 구현하려고 이것 저것 자료를 보다가, 생소한 용어들을 만나게 되어 좀 찾아 보았다.
생소한 용어들이란 바로 binormal &  tangent vector 이다.

* Binormal vector - normal에 수직인 vector (이것은 dot product를 이용한 방정식으로 구할 수 있을 듯)
* Tangent vector - normal과 binormal에 동시에 수직인 vector (달리 말하면 normal과 binormal이 이루는 평면에 수직인 vector 또는 그 평면의 normal, 이것은 normal과 binormal의 cross product로 구할 수 있다)

이와 관련해서 다시 책(Real-time Rendering)에서 찾아보니, 책의 초반부에 Normal Transform과 관련된 내용이 있었다.

법선벡터들은 기하구조 변환에 사용된 특정 행렬의 역행렬의 전치 행렬에 의해서 변환되어야만 한다. 그러므로 기하 구조를 변환하는 데 사용한 행렬이 M 이라면 그 기하 구조의 법선 벡터를 변환하는 데는 다음과 같은 행렬 N을 사용하여야 한다.

N = (M^{-1})^{T}

참고로 직교 행렬의 역행렬은 자신의 전치 행렬이므로 그 행렬 자체가 법선 벡터를 변환하는데 바로 사용될 수 있다.
원래의 회전 행렬이 주어지면 두 개의 행렬 전치는 소거된다.
더욱이 평행 이동은 벡터 방향에 영향을 주지 않으므로 평행 이동을 몇 번 하든 법선 벡터에는 영향을 주지 않는다.

역시, Real-Time Rendering은 아무나 보는것이 아니었나보다.
이런 내용이 무려 p.55에 등장한다. 까만것은 글씨요 하얀것은 종이 였으리라... oTL
이제 다시 보니, 어렴풋이 뭔가 그려지는 정도? 그러나 아직 멀었다. : )

'3D그래픽' 카테고리의 다른 글

Transforms (변환 행렬)  (0) 2011.09.06
Goraud shading vs. Phong shading  (0) 2011.09.02
COLLADA (3D Asset Exchange Schema)  (0) 2011.08.31
OpenGL ES 2.0 Q&A by myself  (5) 2011.07.12
OpenGL ES 2.0 on Android 2.2  (0) 2011.06.29
Posted by 세월의돌
기술 관련 글2011. 9. 2. 10:23
[출처: ZDNet RAID 1-6 레벨 이해하기]
 

▶ RAID 0(디스크 스트라이핑)
* 최소 드라이브 개수 : 2
* 최대 용량 : 디스크의 수 x 디스크의 용량
* 설명 : 데이터를 블럭으로 쪼개서 저장하는데 각 블럭은 다른 디스크로 나뉘어 저장된다. 

* 장점 : 매우 빠르다. 데이터는 여러 개의 "모터(spindles)"로 스토리지에서 읽고 쓴다. 즉, I/O 로드가 분산되는 것을 의미하기 때문에 매우 빠르다. 이론적으로 디스크를 추가하는 족족 성능은 향상된다. 보통 엄청난 성능이 필요할 때 사용하는데 성능이 정말 좋은지 알아 보기 위해 스토리지를 아이오미터(IOmeter)같은 도구를 사용하여 확인한다.
* 단점 : 드라이브 하나가 고장 나면 이 RAID 레벨은 어떤 안전장치도 없기 때문에 천체 어레이가 고장 날 수 있고 디스크를 추가할 수록 위험이 증가한다.(주: 어레이는 여러 개의 디스크 배열을 의미)

▶ RAID 1 (디스크 미러링)
* 최소 드라이브 개수 : 2
* 최대 용량 : (디스크의 수/2) x 디스크의 용량
* 설명 : 스토리지에 저장되는 모든 데이터는 두 개의 물리적인 디스크에 각각 저장되고 모든 데이터는 중복된다.

* 장점 : 드라이브 하나가 고장 나면 똑같은 내용의 다른 드라이브가 하나 더 있기 때문에 매우 안전하다. RAID 1은 읽기 성능이 단일 드라이브에서의 성능과 같거나 훨씬 좋다. 
* 단점 : 각 드라이브는 미러링되기 때문에 전체 용량의 절반밖에 사용하지 못한다. 드라이브 두 개에 동일한 데이터를 써야 하기 때문에 쓰기 성능이 나빠질 수 있지만 아직 다른 RAID 레벨의 쓰기 성능보다는 훨씬 낫다. 

▶ RAID 2: 이 레벨은 더 이상 사용되지 않는다

▶ RAID 3(패리티를 사용하고 디스크를 병렬로 처리한다)
* 최소 드라이브 개수 : 3 
* 최대 용량 : (디스크의 수 - 1) x 각 디스크의 용량
* 설명 : 데이터는 바이트 단위로 쪼개져서 모든 디스크에 균등하게 나뉘어 저장되고 패리티 정보는 별도의 전용 디스크에 저장된다.

* 장점 : 한 개의 드라이브가 고장 나는 것을 허용하며 순차적 쓰기(sequential write) 성능과 순차적 읽기(sequential read) 성능이 우수하다. 
* 단점 : 잘 사용되지 않고 문제를 해결하는 것이 어려울 수 있다. 하드웨어 RAID가 되어야 실제로 쓸만하다. RAID 3은 보통 매우 효율적이지만 임의 쓰기(random write) 성능이 나쁘고 임의 읽기(random read) 성능은 꽤 좋다. . 

RAID 4 (각 디스크는 패리티 블럭을 공유한다)
* 최소 드라이브 개수 : 3
* 최대 용량 : (디스크의 수 - 1) x 디스크의 용량
* 설명 : 모든 파일은 블럭으로 쪼개지고 각 블럭은 여러 디스크에 저장되지만 균등하진 않다. RAID 3처럼 RAID 4도 패리티를 처리하기 위해 별도의 디스크를 사용한다. 동시 트랜잭션 사용량이 많은 시스템에서 읽기 속도는 매우 중요한데 이런 시스템에 적합하다. 
* 장점 : 드라이브 하나가 고장 나는 것을 허용하고 읽기 성능이 매우 좋다. 
* 단점 : 쓰기 성능이 나쁘지만 블럭 읽기(block read) 성능은 괜찮다. 

▶ RAID 5(패리티를 순환시키는 것 없이 각 어레이에 접근한다)
* 최소 드라이브 개수 : 3
* 최대 용량 : (디스크의 수 - 1) x 디스크의 용량
* 설명 : RAID 4처럼 데이터의 블럭은 모든 디스크에 나뉘어 저장되지만 항상 균등하진 않고 패리티 정보도 모든 디스크에 나뉘어 저장된다. 
* 장점 : 지원하는 회사가 많고 한 개의 드라이브가 고장 나는 것을 허용한다. 
* 단점 : 디스크 재구성(rebuild)이 매우 느리고 쓰기 성능은 패리티 정보를 끊임없이 갱신해야 하기 때문에 우수하다고 할 수는 없다. 

▶ RAID 6(각 디스크에 패리티 정보가 두 번 독립적으로 분산된다) 
* 최소 드라이브 개수 : 3
* 최대 용량 : (디스크의 수 - 2) x 디스크의 용량
* 설명 : RAID 4처럼 데이터의 블럭은 모든 디스크에 나뉘어 저장되지만 항상 균등하진 않고 패리티 정보도 모든 디스크에 나뉘어 저장된다. 

* 장점 : 두 개의 드라이브까지 고장 나는 것을 허용하고 읽기 성능이 우수하고 매우 중요한 경우에 적합하다. 
* 단점 : 쓰기 성능은 패리티를 여러 번 갱신해야 하기 때문에 RAID 5보다 매우 나쁘다. 디스크를 재구성하는 동안에 성능이 매우 나빠질 수 있다.

'기술 관련 글' 카테고리의 다른 글

C++ Books  (0) 2012.03.31
Introduction to OpenCL  (0) 2011.10.01
감독 대 위원회, 애플 대 구글  (0) 2011.08.22
안드로이드와 특허, 구글의 위선  (0) 2011.08.06
SSD의 TRIM이란?  (0) 2011.04.06
Posted by 세월의돌