Transparent Bumped Specular

이 쉐이더를 위한 하나의 고려 사항은 기본 텍스쳐의 알파 채널이Specular Map 뿐만 아니라 투명한 영역을 정의한다는 것입니다.

이 셰이더는 메쉬 기하구조(mesh geometry)을 주 텍스처(main texture)의 알파 채널을 읽음으로써 부분적으로 혹은 완전히 투명하게 만들 수 있습니다. 알파에서는, 0(검정색)은 완전히 투명한 것이고 255(흰색)은 완전히 불투명한 것입니다. 만일 사용자의 주 텍스처에 알파 채널에 없다면, 그 오브젝트는 완전히 불투명하게 보일 것 입니다.

사용자의 게임에서 투명한 오브젝트를 사용하는 일은 일견 까다로울 수 있는데, 그 이유는 사용자 게임에서 순서정렬의 문제가 나타날 수 있는 전통적인 그래픽 프로그래밍의 문제가 존재하기 때문입니다. 예를 들면, 두 개의 창을 한꺼번에 볼 때 이상한 결과가 보인다면, 그것은 투명성을 사용하는 데 있어 발생하는 클래식 한 문제입니다. 일반적인 규칙은, 어떤 경우에 따라 하나의 투명한 오브젝트가 다른 것 위에 비정상적인 방법으로 그려질 수 있다는 사실을 인지하는 것입니다. 특히 오브젝트가 교차되거나, 서로를 둘러싸거나 혹은 매우 다른 크기일 경우입니다. 이러한 이유로, 사용자는 필요한 경우에만 투명한 오브젝트를 사용하고, 과도하게 사용하지 않으려 노력해야 합니다. 또한 기획자에게 그러한 정렬문제가 발생할 수 있다는 것을 알려서, 이러한 문제를 우회해 할 수 있는 준비를 하도록 해 주어야 합니다.

Diffuse 셰이더(shader)처럼, 이것은 단순한(Lambertian) 조명 모델입니다. 표면 상의 조명은 그것과 조명 사이의 각도가 작아질수록 줄어듭니다. 조명은 각도에 따라 달라지고, 카메라가 움직이거나 주위를 회전해도 변경되지 않습니다.

Normal mapping은 그 세부사항을 실제로 얻기 위해 다각형을 더 사용하기 보다는, 텍스처를 사용하여 작은 표면의 상세 정보을 시뮬레이션 합니다. 이는 오브젝트의 모양을 실제로 변경하지는 않지만, 이 효과를 얻기 위하여 Normal Map 이라 불리는 특별한 텍스처를 사용합니다. 이 노멀 맵(normal map)에서는, 각 픽셀의 색상 값은 표면 노멀의 각도를 나타냅니다. 기하구조(geometry)에서 가져온 것 대신 이것을 사용하여, 조명을 계산합니다. 노멀 맵은 오브젝트이 조명을 계산할 때 메쉬의 기하구조(mesh's geometry)보다 효과적으로 우선됩니다.

스페큘러(Specular)는 Diffuse와 같은 단순한 (Lambertian)조명에, 사용자에 따라 다른 스페큘라 하이라이트을 계산합니다. 이는 Blinn-Phong 조명 모델이라 불립니다. 이는 표면의 각도, 조명의 각도, 그리고 시야의 각도에 따라 다른 스페큘러 하이라이트를 가지고 있습니다. 그 하이라이트는 실제로 조명 원천의 흐린 반사를 시뮬레이트 하기 실시간에-적합한 방식입니다. 해당 하이라이트에 대한 흐림의 레벨은 Inspector에서 Shininess 슬라이더에 의해 제어됩니다.

추가적으로, 주 텍스처의 알파 채널은 스페큘러 맵(때로는 "gloss map"이라 불리움) 역할을 하며, 오브젝트의 어떤 부분이 다른 부분보다 더 반사적인지를 정의합니다. 해당 알파의 검은 영역은 0 스페큘러 반사가 되는 반면, 흰색 영역은 완전 스페큘러 반사가 될 것입니다. 이것은 사용자가 자신의 오브젝트의 여러 부분이 다른 레벨의 스페큘러 성질(specularity)을 반사하고자 할 때 매우 유용합니다. 예를 들어, 녹슨 금속은 낮은 스페큘러를 가지는 반면 잘 닦은 금속은 높은 스페큘러를 가질 것 입니다. 립스틱은 피부보다 높은 스페큘러 성질을 가지고, 피부는 면으로 된 천보다 높은 스페큘러 성질을 가집니다. 잘 만든 스페큘러 맵은 플레이어를 표현하는 데 엄청난 차이를 가져 올 것 입니다.

Performance

일반적으로 이 쉐이더는 표현하기에 비용히 적당히 많이 듭니다. 더 자세한 정보를 위해서는 Shader Peformance page를 살펴보시기 바랍니다.

역링크