전체 글 53

리듬겜 프로토 제작일기 - 3

어제는 노트 속도 설정하는 걸 구현했고 오늘은 오프셋 설정하는 걸 구현했습니다 그냥 버튼을 눌러서 설정할 수도 있고, 자동 설정으로 직접 박자에 맞춰 눌러가지고 설정할 수도 있죠 이전 속도 설정 만들 때까지만 해도 시간 관련한건 FixedUpdate에서 처리하려고 했는데, 이게 오늘 오프셋 설정 만들때 보니까 연산이 조금만 많아져도 렉이 체감이 될 정도로 꽤나 걸리더라고요. 특히 저 click 버튼 누를 때 멈춤 현상이 일어나고 그때 FixedUpdate 실행 횟수가 누락이라고 해야되나? 실행이 안되는건지 느려지는건지 해서 시간 측정이 잘못되더라고요. void Update() { if (isAuto) { time += Time.deltaTime; if (time >= beat * 4) { time -= ..

플밍 2020.08.18

리듬겜 프로토 제작일기 - 2

오늘은 일단 노트 속도 설정하는 부분만 작업했습니다 본가에서 학교쪽으로 다시 올라오느라 거의 하루 전체를 그냥 보내버렸다시피 했네요 그냥 속도 조절하는 UI 관련 기능들은 스크립트 하나에 다 몰아서 넣었습니다 노트 계속 생성하는거랑 속도조절, OK 눌러서 다음으로 넘어가는거 이렇게 3개 있었죠 다음으로 넘어가는건 만들어는 뒀는데 영상에선 안들어갔네요 private void FixedUpdate() { time++; if (time >= 375) { time -= 375; GameObject n = Instantiate(note); n.transform.position = new Vector3(-2.5f, 0.05f, 64.6f); n.GetComponent().speed = 2500 / noteSpeed..

플밍 2020.08.17

리듬겜 프로토 제작일기 - 1

일지같은걸 한번 써보려합니다 계속 쓰면 나름의 포폴도 될 것 같고 나중에 쌓인 글 보면 뿌듯할 것 같아서? 하지만 제작"일기" 인 만큼 뭐 대단한 내용을 적는건 아니고 그냥 대충 오늘 뭐 했는지랑 간단한 에피소드같은 걸 적어보려 합니다 말 그대로 그냥 일기인 셈이죠 오늘은 그냥 간단하게 프로토타입에서 구현해야 되는 목록이랑 대략 어떤 순서로 굴러가는지에 대해 정리만 한 것 같네요. 이게 이전에는 비주얼스튜디오 키고 바로 그냥 코딩으로 들어갔었는데 생각보다 멍때리는 시간이 굉~~장히 길었습니다 그냥 머릿속에서는 '어 그냥 대충 이렇게 구현하면 되지않나?' 싶으면서도 막상 코딩하려하면 '아 근데 그냥 이렇게 써도 되나?' 라던가, '이런식으로 구현하면 이다음기능 구현할때 애매할텐데' 라는 생각 등등... 잡..

플밍 2020.08.16

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

굴절을 만들어봅시다 사실 굴절은 투명이 아니라 물 아래쪽을 캡쳐한 걸 꾸겨서 보여주는 겁니다 그래서 굴절을 구현하기 위해선 먼저 물 아랫부분을 캡쳐를 해줘야하죠 그런 역할을 CameraOpaqueTexture가 해줍니다 사용방법은 이런식으로 블랙보드에 Texture2D를 만든 후, Reference에 _CameraOpaqueTexture 라고 적어줍니다 이러면 저 값에 자동으로 카메라를 캡쳐한 게 들어가게 됩니다. 실시간으로 계속 캡쳐를 해서 넣어주죠 이걸 샘플러를 통해 마스터노드에 연결시키면 됩니다 근데 뭔가 좀 이상하죠 작동은 잘 되고있는 게 맞는데, 이게 캡쳐한 결과를 또 캡쳐해서 그리고 또 캡쳐해서 그리고 하면서 거울속의 거울 같은 느낌으로다가 우리가 원하는 결과물이 안나오게 됩니다 우리가 원하는..

그래픽(기타) 2020.02.16

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

1. 리플렉션 활용 리플렉션을 넣은 투구를 완성시켜봅시다 먼저 텍스쳐를 통해 리플렉션을 먹일 부분을 마스킹을 해봅시다 그리고 추가로 큐브맵에 노말맵도 입혀봅시다 노말맵을 가져와서 트랜스폼을 통해 오브젝트 좌표계로 바꿔서 큐브맵의 노말에 넣어줍니다(큐브맵에서 오브젝트 스페이스로 계산을 하기 때문에) 그리고 나온 샘플큐브맵 데이터를 마스킹할 텍스쳐와 곱해줍니다 그러면 텍스쳐에서 하얀 부분만 리플렉션이 먹은 결과물이 나오게 되겠죠 한번 결과물을 봅시다 이런식으로 결과물이 나오게 됩니다 그다음 텍스쳐맵도 추가해봅시다 위에서 큐브맵 마스크를 빼냈던 곳에서 이번엔 g값을 빼내서 사용합니다 g값은 ao맵? 인것같아요 생긴거보니까 암튼 저 값을 매핑한 텍스쳐랑 곱해서 알베도에 넣으면 텍스쳐 자체가 좀 어두운 톤이라 크..

그래픽(기타) 2020.02.12

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

1. 2Pass 아웃라인 저번엔 프레넬로 아웃라인을 만들었었는데 이번엔 멀티패스를 사용해서 아웃라인을 만들어봅시다 1 - 멀티패스 사용하기 일단 멀티패스를 사용하는 방법이 SRP 환경에서는 좀 특이하게 되있습니다 셰이더 내부에서 패스를 여러개를 못써요 새로 바뀐 방법을 통해 패스를 추가해봅시다 Project 탭에서 + 누른 뒤, Rendering -> Universal Render Pipeline -> Pipeline Asset 을 생성해줍니다 생성을 하시면 생성한 파일 + 같은 이름의 Renderer 파일이 추가로 생성됩니다 안을 보시면 전체적인 렌더링 속성? 같은 걸 설정할 수 있게 되어있고, 맨 위에 Renderer List에 보면 파일 생성했을때 같이 생성된 렌더러 파일이 기본적으로 들어가 있는걸..

그래픽(기타) 2020.02.09

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

오늘은 버텍스 셰이더를 합니다 와악 1. 버텍스 포지션 2. 마스킹 추가해보기 3. 노말 벡터 사용하기 1. 버텍스 포지션 지금까지 우리가 만졌던 셰이더는 픽셀셰이더로, 각 픽셀을 어떻게 그릴지를 컨트롤하는 셰이더였습니다 오늘 만지는 건 버텍스를 수정하는 버텍스 셰이더죠 여기있는 저 3개가 버텍스셰이더 관련 노드입니다 오늘은 저 3개중에서 Position을 만져봅시다 버텍스의 포지션 값은 일단 Position 노드를 통해 빼내올 수 있습니다 여기서 좌표계를 Object로 설정하면 Vertex Position에 기본적으로 꽂혀있는 값이 나옵니다 이걸 Vertex Position에 그냥 꽂으면 아무 변화가 없죠 하지만 저 값에다가 y를 1 더하면 어떻게될까요? 오브젝트의 위치는 그대로인데 그려지는 위치가 달..

그래픽(기타) 2020.02.07

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

NPR셰이더 2탄입니다 1. 음영 단계를 텍스쳐로 만들어버리기 저번엔 음영 나뉘는 걸 수학연산을 통해서 구현했었죠 이번엔 텍스쳐를 사용하여 나누는 방법을 사용할겁니다 일단 하프램버트를 준비합니다 그 다음 이런 식으로 단계가 나눠져있는 텍스쳐를 준비합니다 저 텍스쳐를 가지고 음영 단계를 나눌건데 옛날 UV 조절했을 때의 기억을 보자면 저 UV의 왼쪽 아래 부분이 (0,0)이고, 오른쪽 위가 (1,1) 이었죠? 그리고 텍스쳐를 보면 왼쪽으로 갈 수록 어두워지고, 오른쪽으로 갈수록 밝아집니다. 즉, UV의 x값이 커질수록 밝아지는 텍스쳐라는 것이죠 여기에서 그럼 UV에 위에서 만들었던 하프램버트값을 넣으면... 이런식으로, 어두운 쪽은 x가 낮아지니까 텍스쳐의 왼쪽(어두운쪽)이 칠해지고, 반대로 밝은 쪽은 텍..

그래픽(기타) 2020.02.04

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

툰셰이더를 만들어봅시다(와아아아악!!!!) 1. NPR 2. 확 갈라지는 그림자 3. 아웃라인 - fresnel outline 1. NPR Non Photo Realistic의 약자로, 사실적이지 않은 기법? 그런 셰이더라 보면 됩니다 그중에 뭐 툰셰이더도 껴있고 그런것이죠 뭐 이런거라던가(오브라딘 호의 귀환) 이런거처럼요(소울워커) 간단하게 하나 구현해봅시다 dither 라는 노드를 사용할건데, 이게 어떻게 생겨먹었느냐 보면 이렇게 점들이 박혀있는게 알아서 만들어져 있는 노드입니다 in에다가는 대충 점의 크기? 그런 역할을 하는 것 같고, 아래에는 스크린 포지션이라고해서 내가 보는 화면 자체를 uv로 사용해서 화면 제일 왼쪽 아래가 (0,0), 맨오른쪽위가 (1,1)인 벡터입니다 z, w값은 프리뷰로도..

그래픽(기타) 2020.01.31

유니티 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