프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by Silverchime

안녕하세요  Silverchime 이라고 합니다 실버차임입니다 치매가 아닙니다 ;ㅅ;
현재 T사의 TG프로젝트에서 배경쪽과 TA로 일하고 있습니다. 쟁쟁하신분과 차마 비교할 수는 없는데다, 평소에 항상 왜? 또는 어떻게? 등의 의문이 많은 아티스트일 뿐입니다.  이쪽저쪽 뛰어다니며 항상 신기한 것을 찾아다니고 그저 뭔가 모르던것을 알았을때 기쁘고 즐겁습니다. 혹시나 이런것을 좋아하실 분들이 있을것 같아 글을 써 보려고 합니다. 부디 ㅠㅠ 많은 지적 부탁드립니다. 막 떨리네요. 

사과가 빨갛게 보이는 이유는? 이란 질문 많이 들어보셨겠지요. 이제 지겹다고요 ? ㅠㅠ 
그래도 만에 하나 모르시는 분을 의해서 짤막하게 짚고 넘어가겠습니다. 

뜬금없는데다 또? 질문 외우겠다...


빛이 물체에 부딪힌 후 산란되어 G와 B 값은 표면에서 흡수하고 Red 값만 반사되어 우리 눈에 들어오기 때문입니다. 이를 디퓨즈 반사라고 합니다.
 

Diffuse reflection

 
스페큘러 리플렉션은 빛의 방향과 같은 앵글로 반사되는 빛입니다. 이걸로 사진상의 빛을 역추적할 수도 있고. 물체의 표면이 빛에 반사하는 성질을 알 수 있지요. 

Specular reflection



우리가 게임그래픽스에서 쓰는 많은 맵이있죠. 노멀맵, 스페큘러맵, 디퓨즈맵, 셀프일루미네이션맵, 이미시브맵, 알파맵... 

네 오늘은 이중에서 콕 찍어 물체의 스페큘러 리플렉션에 대해서만 이야기해보려고 합니다.
디퓨즈칼라는 위에서 간략하게 설명했습니다. 그렇다면 스페큘러 칼라는 어떤식으로 정해질까요? 

 거친느낌, 매트한느낌, 나무에 니스를 칠한 느낌, 메탈릭한 느낌... 플라스틱.. 등, 사실 촉각등의 부가적인 감각을 이용할 수 있다면 더더욱 정확한 물체의 정보를 알아내겠지만, 아쉽게도 실제로 모니터 속이나 입체안경속의 영상을 만져볼수는 없으니, 경국 게임 그래픽스의 물체의 표면, 즉 매트리얼의 질감을 전해주는 거의 유일무이한 정보는 바로 이 반사되는 빛의 정도와 그 색상에 의한 시각정보입니다. 스페큘러맵은 그만큼 중요한 정보를 전달하고 있지요.

 재미있는 점은 사람들이 궃이 반응하도록 교육을 받거나 의식하지 않아도 표면에 반사하는 빛의 양과 색 등의 정보에 따라 물체의 표면 정보를 시각적으로 인지한다는 점인데요. 

 다음 사진을 보시겠습니다. 메탈릭과 일반 글로시한 표면에 대한 사진을 모아 보았습니다. 경험적으로 어느쪽이 메탈릭인지 보이시지요?
 


이러한 메탈릭 칼라와 나무나 플라스틱등 유기물(탄소체)의 질감의 차이는 어떤곳에서 나오는 것일까요? 

대체 이유가 뭐냐 니들...
 
 
그 이유는 고유한 금속 물체 표면의 전자 때문입니다. 

금속 물체의 표면을 확대한 개념도 입니다. 
원자 주변에 shared electron(공유 전자)이 퍼져 있습니다. 
이 전자는 원자 주변을 자유롭게 이동합니다. 

빛이 이러한 물체의 표면에 부딪치게 되면
(레이저가 빛, 차량이  금속표면이라고 하겠습니다. 무리수 크리티컬...) 
courtesy : Halo

이때 빛에너지에 의해 표면의 에너지레벨이 상승하며 (전자가 들뜬 상태)
이 낮은 에너지레벨과 상승한 레벨 사이의 파장이 특정 가시광선대를 흡수합니다.  


이것을 Band Theory (에너지저레벨과 고레벨의 차이를 밴드라 합니다) 라고 하며 
이러한 이유 때문에 금속 표면들은 고유한 반사율과 메탈 고유의 색을 가지게 됩니다.  


이러한 일렉트론을 가진 도체 물체 표면을
전도체 Conductors 라고 부릅니다.

 그러면 반대의 경우,  일반 글로시한 물질의 표면은 어떨까요? 
네 일반 유기체, 사과나 플라스틱이나, 대리석이나, 니스칠한 나무같은 것들이죠. 이들의 표면에는 당연히 자유롭게 돌아다니는 일렉트론이 없고, 따라서 빛이 히트하더라도 밴드 이펙트가 발생하지 않으므로 표면의 색의 차이는 단지 하얀색으로 명도(Brightness) 의 차이만 발생하게 됩니다. 
 
이런경우를 절연체 Dielectrics 이라고 합니다.  

자 그럼 이런 각기 다른 경우들의 스페큘러를 다시한번 보겠습니다. 

좌측이 전도체, 오른쪽이 절연체 입니다. 이제 표면이 어떤 차이인지 구분이 확 가시지요? 

주변의 실제 물체를 보시면 사진보다 구분이 더 잘 가실 겁니다.  


   일반 절연체 Dielectric의 경우에 있어 일반적으로 흡수하는 빛의 색과 반사되는 빛의 색은 서로 보색관계에 있습니다. 한번 직접 실연을 해보도록 하겠습니다. 

포토샵에서 1. Diffuse맵의 칼라를 한장 더 복사해서 Saturation/Hue 패널을 열고 끝까지 돌려 보색으로 만들고 2. 반짝일 부분을 마스크로 그려서 3. Linear Dodge형태로 원래의 diffuse의 색에 블렌딩하면 정확한 스페큘러 칼라가 나옵니다.

  

그럼 이제는 컨덕터 표면의 스페큘러 칼라를 블렌딩 하는 법을 알아보겠습니다. 
이 경우는  그저 디퓨즈 컬러를 그냥 사용하거나 아니면 약간 밝게 Brighten된 이미지를  Linear dodge(add)연산을 해주면 됩니다. 

만일, 그러면 만일 보색으로 변환해주고 add 해주는 위의 일반적인 dielectric 방식으로 해주면 어떤식으로 보일까요? 두가지를 한번 비교해보도록 하겠습니다. 
 

자 위쪽의 이미지를 보시면 하얀색으로 반짝이는 구리방패를 보실 수 있습니다. 아래쪽이 정상적인 스페큘러 칼라를 그냥 얹은 형태입니다. 레퍼런스와 비교해 보시면 어떤식으로 다른지 보이실겁니다. 위쪽은 하얗게 올라오지요. 아래가 정상입니다. 
 

위의 형식으로 한번 이번은 문짝에 일반적인 메탈릭 스페큘러식으로 그냥 약간 밝게 한 블렌딩과 보색처리를 해준 두 세트를 비교해 보았습니다. 레퍼런스와 비교해 보시면 위쪽이 정상적인 블렌딩입니다. 아래는 나름 할로겐 조명 같다고 우기시면 ㅠㅠ Orz


메탈릭이냐 아니냐, 이런 이론을 모르는 사람도 대부분 경험적으로는 알고 계실거라고 생각합니다. 하지만 저는 부끄러운 고백을 하겠습니다. 모를때는 그냥 디퓨즈맵을 대충 얼버무려서 쓰고는 했습니다. 그런데, 항상 대체 메탈릭 칼라란 무엇이고 어째서 다르게 느껴질까? 라는 의문은 머리속에서 떠나지를 않더군요. 

사실 우리 주위의 대부분이 빠른 산화를 막기 위해서든 차가운 느낌이 싫어서, 또는 추울때 닿으면 살이 얼어서 들러붙는다던지 등, 여러 가지 이유로 금속표면을 그대로 노출하는 경우는 드뭅니다. 하지만 배경이나 장식에서는 금속 장식이나 오나먼트등 순수한 금속 자체로 노출되는 경우가 많습니다 더불어 시각적으로 잘 보이는곳에 배치하므로 빛에 강하게 노출되고는 합니다. (특히나 배경에는 자주 씁니다..노출된 메탈...황동Brass, 구리Copper, 금박Gold... )

 courtesy : Warhammer 40,000 ; Space Marine 
푸른색은 약간 매트한 페인트 도색, 숄더패드 장식과 백팩 커버는 금색 메탈로 보입니다.
 
게임에서는 퍼포먼스를 위해 스페큘러맵을 Glossiness 마스킹 맵으로 쓰는 경우도 많고 이런 경우는 대신 매트리얼에서 오버레이 되는 스페큘러 칼라를 설정해서 쓰곤 합니다. 이럴 경우 어떠한 칼라가 필요한지, 또는 유광 페인트로 으로 커버된 표면인지, 아니면 여러가지 Transition metal을 사용한 칼라가 들어가 있는 금속 표면인지를 결정하는 하나의 기준이 될 수 있다고 봅니다. 위에서도 말했지만, 게임 내에서는 단지 시각적 정보로만 물체의 표면을 표현하고 판단해야 되니까요. 

일례로, Transition metal인 Iridium을 섞으면 블루칼라의 골드도 나올 수 있습니다. 
아니면, 어떤 게임에서 자전거가 중요한 비주얼을 차지하는 게임인데 
아노다이징 도색을 적용했을때 라던지의 경우가 있을 수 있겠죠. 

나 좀 비싼 프레임.... Anodized color
간지를_표현해_주지_않으면_유료프레임_템을_사지_않을테다.jpg


이상으로 물체의 스페큘러 칼라에 대해 알아보았습니다. 
정리하면 절연체와 전도체의 경우 다른 스페큘러 칼라를 가진다는것, 그리고 왜 절연체의 경우 스페큘러 칼라가 하얀색으로 표현되는지, 전도체의 경우는 왜 특이한 색을 띠는지에 정도가 되겠네요... 헥헥

부족한 글을 읽어주셔서 감사합니다. 다음은 배경에서 쓰일 인간의 행태학 Behavior 라던지, 환경, 기후, 건축등 여러가지 다른 주제로 찾아뵙도록 하겠습니다. 모두 즐거운 하루 되세요 ^^ 

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. enyoares 2011.12.19 16:08  댓글주소  수정/삭제  댓글쓰기

    굉장히 유용합니다. 너무 좋은 글이네요.

  3. Favicon of https://gamedevforever.com 핑속 2011.12.19 16:17 신고  댓글주소  수정/삭제  댓글쓰기

    덕분에 좋은 개념 배웠습니다. ^^

  4. Favicon of https://gamedevforever.com 알콜코더 2011.12.19 16:41 신고  댓글주소  수정/삭제  댓글쓰기

    오오~ 좋은 글 감사합니다~ 이런 깊이 있는 내용이 ㄷㄷㄷㄷ;

  5. samchawon 2011.12.19 17:34  댓글주소  수정/삭제  댓글쓰기

    원씨 멋있음~

  6. 김용준 2011.12.19 18:01  댓글주소  수정/삭제  댓글쓰기

    아아...좋은 글이다...하지 않겠는...쿨럭... =_=;

  7. Favicon of http://ohyecloudy.com ohyecloudy 2011.12.20 10:52  댓글주소  수정/삭제  댓글쓰기

    아아~ 좋은 글. 잘 봤습니다.

  8. Favicon of http://Junios.net Junios 2011.12.20 11:26  댓글주소  수정/삭제  댓글쓰기

    좋은글 보고 갑니다. 전도체 절연체 ㄷㄷ

  9. Favicon of http://blog.naver.com/saebaryo 사에바료 2011.12.20 13:56  댓글주소  수정/삭제  댓글쓰기

    스페큘러 컬러에 관심이 많았는데, 과학적인 설명 감사합니다. ^^ 잘 봤습니다.

  10. zodi 2011.12.20 22:49  댓글주소  수정/삭제  댓글쓰기

    재질에 따른 반짝임차이가 저런이유였다니!!
    좋은 글 감사합니다.

  11. paaz 2011.12.21 11:54  댓글주소  수정/삭제  댓글쓰기

    와 좋은 글 감사하빈다.

  12. 죠쉬 2011.12.21 13:17  댓글주소  수정/삭제  댓글쓰기

    오, 여러가지 좋은정보 감사합니다.
    멋지구리! 합니다.

  13. 아도 2011.12.21 16:49  댓글주소  수정/삭제  댓글쓰기

    잘읽었어요 퍼갈게요 ^^

  14. Favicon of http://hokoodo.lil.to 호빵 2012.01.06 13:48  댓글주소  수정/삭제  댓글쓰기

    이런 글을 뒤늦게 읽게 되다니...

    그림쟁이로써 큰 도움이 되었습니다.
    감사합니다.

  15. 조조 2012.01.18 23:10  댓글주소  수정/삭제  댓글쓰기

    "절연체 Dielectric의 경우에 있어 일반적으로 흡수하는 빛의 색과 반사되는 빛의 색은 서로 보색관계에 있습니다."---> 이상한 부분이 있어서 글을 남김니다. 스펙큘러의 칼라와 고유 물체의 칼라와는 다른 의미를 가지는 것으로 알고 있습니다. 절연체나 비절연체이든 그 밴드의 정도에 따라서 고유의 칼라가 지정되어서 색을 나타내는 것이지, 특별히 비금속이라고 스펙큘러의 색이 보색이 되지는 않는다고 알고있습니다. 스펙큘러는 반사광의 칼라를 나타내는 것이고,반사되는 광원의 칼라가 반영+고유칼라로 됩니다. 일반적으로 피부톤이 푸른색으로 그려지는건 하늘의 간접광과 피부의피하의 영향에 의한 것입니다. 텅스텐광이라면 푸른 색조명이기 때문에 파란 스펙큘러를 가지는 것입니다. 또하나는 생리인지적으로 무채색의 보색간섭으로 파랗게 보이던가요. 비절연체의 스펙은 보색이라는 것은 오류라 생각되어 적어봅니다. 제가 잘못알고 있는것일수도 있으니 좋은 정보있으면 가르켜주시기 바랍니다. ^^ 좋은글 잘보고 갑니다.

    • Favicon of https://gamedevforever.com Silverchime 2012.02.06 11:49 신고  댓글주소  수정/삭제

      당연히 광원의 색이 비쳐보이는건 당연하겠지요.
      붉은색 조명아래서의 물체의 스페큘러는 붉은색으로 보일 것입니다. 하지만 기준 그레이를 중심으로 '칼라밸런스'를 맞추어 보면 절연체의 경우는 하얀색으로 나타납니다.

      일례로, 식당에서 찍은 음식사진의 경우도 조명에 따라 담긴 접시의 색이 혼합색으로 나옵니다만, 칼라밸런스를 맞추시면 접시가 하얀색이라면 본래의 하얀색으로 돌아오며 이떄 다른 절연체의 스페큘러들 역시 하얀색으로 보이게 됩니다.

      피부는 사실 SSS렌더링 같은 피하로 굴절되어 들어간 빛이 다시 난반사되는 과정을 묘사해야 하나, 일반적으로 리얼타임에서는 절연체와 비슷한 재질을 주고, 셰이더를 추가해서 안에서 빛이 난반사되는 느낌을 추가하게 됩니다.

    • 조조 2012.02.20 14:04  댓글주소  수정/삭제

      보색에대한 관련 물리적인 현상의 내용이 있다면 참고하고싶네요 링크라도 걸어주세요...추론이 멋지지만 적용과연결성이 다른내용인것같습니다. 참고로 물리학이 아닌 인지생리학적으로 주변이 붉은색인경우 무채색의 물체는 보색으로 보이긴합니다. 사진소스들도 예가 되기가 힘든것이 어떤조건이냐에 따른 실험사진이 아닙니다. 죄송합니다 태클거는거같아서, 저역시 확실하게 알자는게 포인트입니다.


    • 조조 2012.02.20 14:11  댓글주소  수정/삭제

      물리적으로 스펙이 보색이 되지는 않습니다,기본적인건 스펙은 반사입니다.스펙큘러에 색이 있다면 그건 간접적인 주변의 작용입니다. 아트웍적 페이크와 물리현상과는다릅니다, 설명은 물리적접근으로 했지만 예는 시각적인 표현의 페이크라서 ,,스펙의 디퓨즈광과 직접반사도에의한 칼라의 영향은 있지만 보색이되지는 않습니다.컬러밸런스는 색온도를 바로잡기 위한건가요? 이 역시 백색조명아래의 흰접시라면 당연히 백색하이라이트가 되겠지요. 스펙큘러가 반사광이기 때문이지 특별히 색이 변하기 때문이 아닙니다. 비절연체의 스펙은 보색이다라는건 정확한 물리적설명인지 아트웍인지 설명이 안된다면 오류가 크겠지요,

  16. 홍일도 2012.02.01 07:42  댓글주소  수정/삭제  댓글쓰기

    훌륭합니다! 접수완료했습니다. 감사해요^^

  17. 성우 2012.06.13 22:12  댓글주소  수정/삭제  댓글쓰기

    좋은글 감사합니다~ 담아갈께여

  18. 화면가득 2013.07.17 23:04  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다. 깊이 있는 내용이네요~
    한가지 궁금한 것이 있는데요, 절연체의 Specular는 보색으로 하는 이유는 결국 Diffuse와 섞여 나왔을때를 상정하는 것인가요? 제가 이해한 바로는 Diffsue 색상과 그 보색을 섞음으로써 Specular의 색상을 Gray-Scale로 만들기위한 것 같다는 생각이 들어서요.

  19. 로건이 2014.04.11 14:56  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다. 3d하면서도 몰랐던걸 알아가네요 감사합니다. 담아갈께요~

  20. 로건이 2014.04.11 14:56  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다. 3d하면서도 몰랐던걸 알아가네요 감사합니다. 담아갈께요~

  21. 코비옴 2014.05.27 11:59  댓글주소  수정/삭제  댓글쓰기

    좀 오래된 글이지만 최근에 보게되어 보다보니 먼가 석연치 않아서 글을 적습니다.
    위에 조조님 글이랑 비슷한 생각을 가지고 있는데요.
    예시로들어준 그림을보면 절연체는 하이라이트 색상을 전도체는 하이라이트가 아닌 부분의 색상을 찍어놓은듯 한느낌이네요.

    반사 면적과 표면의 균일한 정도에 영항을 받고 색은 주광색+고유색 으로 나오는게 아닌가 생각됩니다.
    정확하지 않은 정보에 많은 사람들이 혼돈하실가 우려 되네요.