그래픽(기타) 21

유니티 SRP 셰이더 그래프 - 9

스펙큘러를 만들어봅시다 1. specular 2. phong 3. blin phong 4. specular에 노말 추가하기 1. specular http://viralmarketingnews.com/element-3d-v2-new-specular-model/ 이런 하이라이트 맺히는 걸 보고 스펙큘러라고 하네요 그리고 이런 하이라이트들은 노말 벡터와 대칭되는 쪽에 가장 잘 나타나게 됩니다(정반사라고 하더라고요) 그리고 저 스펙큘러는 뷰벡터에 영향을 받아서 R · V 를 해서 스펙큘러의 최종 결과물이 나오게 됩니다 그럼 이걸 토대로 직접 구현해봅시다 2. phong 위에 쓴 원리를 토대로 실제 구현을 해봅시다 위에서 최종 결과물을 뽑아내기 위해서 R dot V를 했었죠 여기서 V는 View Direction..

그래픽(기타) 2020.01.28

유니티 SRP 셰이더 그래프 - 8

1. 림라이트 2. 림라이트 응용 1. 림라이트 1 - 림라이트 만들기 2 - 텍스쳐, 노말맵 추가하기 1 - 림라이트 만들기 림라이트의 특징을 보자면 "어느쪽에서 봐도 항상 외곽이 밝다" 입니다 반대로 말하면 "어느쪽에서 봐도 항상 우리가 바라보는 방향이 제일 어둡다" 이죠 그럼 우리가 이걸 구현하기 위해서 필요한 정보는 내가 바라보는 방향의 벡터와 버텍스의 노말 정보가 필요할 겁니다 우리가 바라보는 카메라 방향에 따라 빛이 달라지는 거니까요 저번에 만들었던 램버트라이트를 꺼내봅시다 이렇게 생겨먹은 기본 라이트를 만들어봅시다 지금은 Custom Fuction에서 나오는 라이트노말에 따라 연산을 합니다 그럼 여기서 라이트 노말 대신 카메라의 방향 벡터를 넣으면 어떻게될까요? View Direction 이..

그래픽(기타) 2020.01.23

유니티 SRP 셰이더 그래프 - 7

1. 빛 연산 2. 모델 최적화 3. 커스텀 라이트 1. 빛 연산 일단 빛연산 들어가기에 앞서서, 내적에 대해 알면 굉장히 편합니다 그럼 내적이 무엇이냐 벡터의 곱셈 방식 중 하나인데, https://m.blog.naver.com/jinohpark79/220011526532 21. 곱해서 더한다? 내적(dot product)의 의미 이번 공간은 내적의 의미에 대해 알아보려고 합니다. * 이번 공간에 앞서 알아두면 좋은 포스트 - 없음. 1.... blog.naver.com 이 분이 설명하신 걸 참고해서 말하자면, "두 벡터가 서로의 성분을 얼마나 갖고 있는가" 에 대한 스칼라 값이 나오는 계산 방식입니다 스칼라는 그냥 수 하나 말하는 거에요 계산은 계산할 각각의 두 벡터 크기와 cosθ를 모두 곱한 값입..

그래픽(기타) 2020.01.19

유니티 SRP 셰이더 그래프 - 6

와 벌써 6강! 1. 버텍스 칼라 응용2 2. 벡터 이론 1. 버텍스 칼라 응용2 응용하는 방식은 저번이랑 비슷합니다 1 - smoothness 2 - normal 1 - smoothness 저번에 타일 깔던 것과 비슷하게 smoothness를 먹이고 싶은 곳을 r/g/b중 골라서 칠한 다음, 그 값을 smoothness에 꽂아주면 됩니다 그럼 칠한 부분은 1이 먹을 것이고, 안칠한 부분은 0이 먹겠죠 이런 식으로요 근데 좀 쎄서 줄이고싶다 하면 0 ~ 1 사이의 값을 곱해주면 되겠죠 뭐 예를 들면 0.3이라던가, 0.8이라던가 등등... 이렇게 마스터노드에 꽂기 전에 0.6을 곱하면 많이 약해진 걸 볼 수 있습니다 2 - normal 여기서도 버텍스칼라 채널 하나 뽑아와서 쓰는건 맞는데 smoothne..

그래픽(기타) 2020.01.13

유니티 SRP 셰이더 그래프 - 5

1. Lerp 2. 버텍스 칼라 응용 1. Lerp 이녀석입니다 안을 살펴봐도 그냥 함수 쓰고 땡인 노드라서 막 길게 설명할 건 없어요 A와 B를 T값에 따라 섞어주는 함수입니다 규칙 1. A와 B는 같은 자료여야 한다(A가 float면 B도 float, A가 Vector3면 B도 Vector3) 2. T는 0 ~ 1 사이의 float값이 들어가야 한다(0에 가까울 수록 결과값이 A에 가까워지고, 1에 가까울 수록 결과값이 B에 가까워집니다.) A와 B에 이렇게 둘다 Vector4(rgba)를 넣어주고 T에 0을 넣었더니 A에 넣었던 회색 텍스쳐가 나오는 걸 볼 수 있습니다 반대로 T에 1을 넣으면 B에 넣었던 불 텍스쳐가 나오겠죠 이런식으로요 한번 이걸로 저 회색 위에 불이 얹혀진 텍스쳐를 만들어봅시다..

그래픽(기타) 2020.01.10

유니티 SRP 셰이더 그래프 - 4

1. UV 심화 2. 버텍스칼라 3. 그 외 기타 1. UV 심화 저번엔 UV와 벡터값 연산을 통해 Tiling / Offset을 조절해봤었습니다 이번엔 연산을 하긴 하는데 직접적인 벡터값이 아니라 칼라를 갖다가(칼라도 결국엔 벡터니까) 연산을 할겁니다 언릿 그래프를 하나 만들고 텍스쳐랑 uv를 받아서 마스터노드에 꽂아줍니다 그리고 UV와 연산할 칼라 노드를 꺼내줍니다 칼라 그대로 써버리면 출력값이 감마로 나와버리니까 Colorspace Conversion으로 알맞게 바꿔준 후 사용합니다 처음엔 일단 회색을 더해봅니다 벡터로는 (0.5, 0.5, 0.5)이고, 플러스 연산이니까 오프셋이 오른쪽 위로 0.5만큼 먹겠네요 적용해보면 진짜로 회색을 더한 결과물과, (0.5, 0.5, 0.5)의 벡터를 더한 결..

그래픽(기타) 2020.01.09

(SRP)쉐이더 서브그래프 제작 - SimpleRaderMask

저거 한번 만들어보고 싶은데 마스크 텍스쳐를 따로 만드니까 크기 면이나, 루핑 면에서 개인적으로 좀 불편하더라고요 그래서 한번 텍스쳐 없이 저런거 만들 때 쓸만한 마스크를 만들 수 있지 않을까? 하는 생각에서 만들어보게 되었습니다 결과물은 이렇습니다! _speed : 마스크가 흘러가는 속도를 조절할 수 있습니다 _offset : 이걸 조절해서 다른 마스크와 더했을 때 면이 겹치는 걸 막을 수 있습니다 (혹은 이걸 이용해서 2줄 나왔다가 한줄 비는 형태의 패턴을 만들 수도 있습니다) _blank : 레이더 선의 간격을 조절할 수 있습니다 _bold : 레이더 선의 굵기를 조절할 수 있습니다 _direction : 레이더의 방향을 정할 수 있습니다(1 : 왼쪽, 2 : 오른쪽, 3 : 위쪽, 4 : 아래쪽)..

그래픽(기타) 2020.01.06

유니티 SRP 셰이더 그래프 - 3

(스터디 정식 인원이 되었어요 와아) 1. 모델에 텍스쳐를 입히는 과정 2. UV 더 자세히 알아보기 3. 가독성을 좋아지게 하는 몇몇 기능 1. 모델에 텍스쳐를 입히는 방법 '머테리얼에 텍스쳐 넣으면 그대로 입혀지던데 여기서도 그냥 텍스쳐 그대로 노드에 붙이면 되겠지?' 텍스쳐 그대로 꽂으려 하면 안꽂아져요 참고로 Split도 안돼요 뭔가 다른 방법이 있다는 뜻이죠 Sample Texture 2D 보면 오른쪽에 있는 출력값에 RGBA들이 있는 걸 볼 수 있습니다 여기서 이제 왼쪽에다 입력 노드 연결시키고 해서 나온 출력을 마스터에 끼워넣으면 텍스쳐가 입혀지는것이죠 그럼 입력값이 뭐뭐가 있는지 봅시다 Texture(T2) 텍스쳐를 받습니다 매핑한 이미지요.(T2는 Texture 2D의 줄임말) UV(2)..

그래픽(기타) 2020.01.05

만들어보았다 - 보급형(?) 석화마법

흑백 필터 시연하시면서 석화마법 어쩌고 하셔가지고 한번 재미삼아 대충 구현해봤습니다 흑백은 이전 포스팅에서 했으니 대충 넘어가도록 하고, 대충 구조를 설명하자면 사용할 텍스쳐와 석화 진행도는 블랙보드로 빼놓고 석화 진행도 값은 Exposed를 꺼놓습니다(스크립트에서만 접근할 거라서) 이렇게 생긴 텍스쳐를 갖다가 tiling값이랑 offset 값을 만져서 흐르게 한다음 흐르게 한 텍스쳐를 흑백처리한 컬러값과 곱해줍니다 그 다음, 흐르게 한 텍스쳐에 One Minus를 사용해서 반전시키고, 이번엔 원본 텍스쳐 컬러랑 곱해줍니다 그리고 저 둘을 더해준 후, 마스터 노드의 albedo에 꽂아넣습니다 셰이더는대충 이런 식으로 짰습니다 스크립트에서 석화 진행도 값을 컨트롤하기 쉽도록 가공하는 부분도 만들어놓긴 했는..

그래픽(기타) 2019.12.29

(스터디 간접참여)유니티 SRP 셰이더 그래프 - 2

히히... 이것만 쓰고 언리얼하러가야지...... 이번시간엔 뭔가 여러가지 했네요 1. 각 Vector들 끼리의 연산법 2. Vector 찢기 / 다시 붙이기 3. Vertex에 들어있는 정보들 4. 예시용 필터 만들기 1. 각 Vector들 끼리의 연산법 자, 원래 자료형이 다른 것들끼리는 연산이 안되는 게 정상입니다 하지만, '형 변환' 이라는 걸 사용하면 자료형이 달라도 어찌저찌 해서 연산을 할 수 있게 만들 수 있죠 (물론 셰이더그래프에선 결국 다 똑같은 Vector4라 그냥 연산이 되지만... ㅎㅎ......) 어쨌든 그럼 서로 다른 Vector들끼리 연산을 하면 어떻게 되느냐 1. 결과값은 더 작은 자료형으로 나온다 2. 각 자리는 맞는 자리끼리 따로 계산된다 3. Vector1은 위 두개에서..

그래픽(기타) 2019.12.29