Unity/복습

Unity Shader 21.05.06. LambertLight 복습

HappyFrog 2021. 5. 6. 13:09

램버트일 때의 모델의 빛 반사값

 

기본 램버트값에서 램버트 공식을 이용하여 출력시킨 빛의 반사값

 

램버트의 빛과 오브젝트의 내적에 0.2를 빼고 saturate기능으로 음수인 값들을 모두 0으로 만든 빛의 반사값.

0.2를 뺐으니 빛을 받던 부분들은 전체적으로 어두워졌고 saturate기능으로 가장 어두운 곳의 값은 0이다.

 

 

하프램버트의 공식을 썼을 때의 모습

 

텍스쳐의 알베도와 감쇠와 램버트공식을 곱하면 final값이 나오는데, 이 final값의 표현이다. 위 사진들이랑 뭐가 다른지는 잘 모르겠다.

 

기존의 final // final에서 atten을 곱하지 않은 것 // final에서 ndotl을 곱하지 않은 것

뭔가 차이가 미묘하게 나는 듯 하면서도 잘 모르겠다. ndotl을 곱하지 않은 것은 확실하게 밝은 색상이다. atten을 뺀 표현은 조금 어두워보이기도 한다.

 

느슨해진 좀비피부에 긴장감을 가져다주었다.

BumpTexture을 이용하여 Normal값에 변화를 주었다. 주의할 점은 Normal을 사용할 때는 빛효과 메서드가 아닌 surf메서드에서 사용해야한다.

 

_Multiple과 _Add를 붙여주어 그래프의 변형을 직관적으로 바꿀 수 있도록 했다.

 

noambient의 기능이 궁금하여 찾아봤다. 아마 환경광을 차단해주는 듯 하다.

 

이것도 궁금해서 해 봣는데

** #pragma의 Study02와 float LightingStudy02의 Study02부분의 이름이 같아야하며

** Lighting의 철자가 틀리면 오류가난다.

 

-- 즉, 프래그마에서 선언한 이름을 // float4 Lighting + 이름 같은 형식으로 선언해야한다.