NormalMap 연산

//—————————————————————-
 //Normal1 method : NormalMap, Traditional method
 //—————————————————————-
 half4 NormalTex = tex2D (_BumpMap, IN.uv_BumpMap); // 범프맵 변환 텍스쳐를 좌표로 연산. 이 시점에서 그레이스케일
 half3 UPNormal =UnpackNormal(NormalTex); // 언펙한다. 언펙 함수 내용은 거기 (…) 안에 있긔
  //~ o.Normal =  UPNormal; // 이걸 노말로 리턴한다. 푸르게 변해있음.
 //—————————————————————-
// 기본적인 방법. 언펙함수로 그레이스케일을 한 번 거쳐서 최종 데이터를 만들어 낸다. 텍스쳐는 범프맵으로 변환. 
// 이렇게 하면 3채널을 다 써야 하는데다가 알파도 따로 사용하지 못한다는 단점이 있다.
 
 
 //—————————————————————-
 //Normal2 method : Texture , Old (Gamebryo) method
 //—————————————————————-
 half4 NormalTex2 = tex2D (_BumpMap2, IN.uv_BumpMap);// 일반 노말 텍스쳐를 UV좌표에 대입
  //~ o.Normal =  normalize(float3(NormalTex2.rg,1)*2-1);// 이걸 곧장 노말로 리턴. b 채널은 어차피 잉여로우므로 다른데 쓰자. *2-1 따위는 이제 기본이므로 (훗) 굳이 설명하지 말자.
 //—————————————————————-
// 겜브리오때 썼던 방법의 재현. 노말맵의  Z 값은 다른데 쓰기 위해 강제지정한다. 텍스쳐는 일반 텍스쳐 상태로 유지. 
// 채널 2개를 사용. 2개의 채널이 남아있다.
 
 
 //—————————————————————-
 //Normal3 method : Texture, Only use GREEN channel !
 //—————————————————————-
 half4 NormalTex3 = tex2D (_BumpMap2, IN.uv_BumpMap); // 일반 노말 텍스쳐를 UV좌표에 대입
 half4 FakeNormal = half4(NormalTex3.g,NormalTex3.g,NormalTex3.g,NormalTex3.g); // 그린 채널만 가지고 half4를 재구성
 half3 UPNormal3 =UnpackNormal(FakeNormal );  // 그레이스케일로 나왔을테니 언펙하자.
 o.Normal =  UPNormal3; // 1번 방식과 동일하게 리턴.
 //—————————————————————-
// 복합적인 방법. 이번엔 노말 텍스쳐의 그린 채널만 이용해서 그걸 다시 언펙시켜 노말맵을 만든다! 당근 텍스쳐는 일반 상태.
// 채널 3개가 잉여롭게 남는다. 아이 기뻐라.

…. 1번은 텍스쳐 채널을 3개 써야 하고 2번은 2개 쓰고 3번은 1개만 쓴다…..
…. 웃긴건 결과가 모두 똑같다 OTL (미세한 차이가 있는 것 같긴 하지만 눈에 띄지 않을 정도)
1번 방법에서 그레이스케일로 변환한 데이터를 보니 그린채널과 크게 다른 점이 없길래 그냥 그린채널을 이용해서 3번을 만들었더니 결과가 똑같애..  OTL 뭐냐 얘…. (3번은 좌우 대칭할때 문제발생)

그림은 공개불가 ㅎㅎ
언젠가 공개할 날이 있을듯

Hugo로 만듦
JimmyStack 테마 사용 중