
Unity VR에 Occlusion Culling 적용해서 실제로 Batch 수 줄어드는거 확인해보기
적용방법은 쉽다 오클루전 Static을 오브젝트에 설정하고 오클루전 굽기만 하면 된다 끗!
- Unity/Study
- · 2022. 11. 21.

Unity 오브젝트를 Slice해버리자~
빠밤★ 신기하쥬? 코드는 조만간 리뷰할게유~.~
- Unity/Study
- · 2022. 9. 26.
적용방법은 쉽다 오클루전 Static을 오브젝트에 설정하고 오클루전 굽기만 하면 된다 끗!
먼저 TextMesh Pro를 사용하는 이유는 기존 TextComponent의 품질이 좋지 않기 때문이다 TextMeshPro를 사용할 경우 품질 향상 및 텍스트 스타일 지정 부문에서 큰 유연성을 가진다는 장점이 있다 스크립트는 이렇게 사용하는 하다 get set은 내가 사용하기 위해 그냥 작성한거
모든 사진 출처는 Unity Korea 여기에 있다 병목이라는 단어는 말 그대로 병의 목부분을 말한다 병의 내부는 공간이 넓지만 목 부분은 공간이 좁아서 병에서 나오는 양이 병의 목에 의해 지연된다 드로우콜이란 CPU가 GPU에게 장면을 렌더링 하라고 명령을 내리는 거다 CPU가 명령을 내릴 때 Command Buffer을 이용해서 명령을 내린다 GPU는 Command Buffer에 있는 Command를 받아서 명령을 처리한다 CPU와 GPU의 처리 작업은 직렬적이 아닌 병렬적이다 위 사진은 GPU가 CPU에게 받은 명령을 다 처리하고 놀고 있는 장면이다 CPU는 계속 일하고 있는 모습 그렇다면 CPU가 일을 많이 하는게 좋으냐? GPU가 일을 많이 하면 좋으냐? 누가 더 많이해서 좋은 건 아니고 바쁜 ..
사진의 모든 출처는 Unity Korea이다 NO!!!! 유니티의 내부 엔진은!! C++로 되어 있다!!! 흔히 게임엔진을 자동차로 비유하는데 엔진 내부는 C++로 되어 있고 유저에게 노출되어 있는 유저 스크립트들은 C#으로 작성할 수 있다!! IL2CPP가 도입되고 나서부터 유저 코드 부분도 C++로 작성할 수 있게 되었다 IL2CPP를 알기 위해서는 C#과 C++의 차이점을 알아야 한다 C++은 객체지향 즉, Class가 생겼으며 메모리 할당과 삭제를 유저가 직접 해주어야 한다 C#은 MS에서 개발한 .Net Framework기반으로 돌아가는 언어임, C++보다 생산성이 높은데 그 이유는 메모리 관리를 자동적으로 해주기 때문임!(가비지 컬렉터!) Mono같은 경우 .Net Framework를 대응하기..
오늘은 베지어 커브에 대해 공부해 보았다 이론은 이러하다 3개의 네모 박스가 존재하고 첫 번째 파란색 동그라미는 Point 1에서 Point 2로 향하고 두 번째 파란색 동그라미는 Point 2에서 Point 3으로 향한다 향할때는 Lerp(보간)식을 이용해서 간다 targets[0].position = Vector3.Lerp(points[0].position, points[1].position, t / s); targets[1].position = Vector3.Lerp(points[1].position, points[2].position, t / s); 이때 보라색 하트는 첫 번째 파란색 동그라미와 두 번째 파란색 동그라미의 위치를 Lerp의 매개변수로 받아서 사용한다 player.position =..
큐브는 빈 오브젝트의 자식으로 되어 있다 즉 상위 부모 오브젝트의 WorldPosition은 (0 , 0, 0) , (2, 0 , 0) 이지만 하위 오브젝트들의 Local Position은 (0, 0, 0), (0, 0, 0)이다 그 이유는 Local Position같은 경우 부모를 기준으로 포지션값을 잡기 때문이다 부모 오브젝트를 기준으로 하기 때문에 World Position이 어떻든간에 부모를 기준으로 삼아 -2만큼 떨어져있기 때문에 (-2, 0, 0)이 된다 디버깅한 결과물이다 여기서 TransformDirection은 Local Position을 World Position으로 바꿔주는 녀석이다
RagDoll 란? 봉제인형이란 뜻이 있다 유니티에서는 애니메이션을 적용해 Hp가 0이 되면 죽는 애니메이션이 실행되는 경우가 많다 하지만, 죽는 애니메이션은 정해져 있으며 적을 제압했을 때 적이 쓰러지는 모션이 항상 역동적이였으면 좋겠다 싶을 때 RagDoll 시스템을 이용하면 된다 Ragdoll 시스템을 이용하기 위해서는 휴머노이드 타입이 필요하다 [3D Object] -> [Ragdoll...]를 클릭하자 Create Ragdoll 창이 뜨는 것을 볼 수 있다 휴머노이드 타입의 객체에서 Ragdoll에 맞는 부위를 끌어다가 놓으면 된다 나는 이렇게 했다(유튜브 참고함 ㅎ...세팅하는방법 모르겠다 ...) Total Mass같은 경우 몸무게라고 생각하면 된다 1 = 1kg , 48 = 48kg이다 매..
터레인 생성하기 하이러키창에 우클릭 후 [3D Object] -> [Terrain]을 클릭하여 터레인을 하나 생성해줍니다. 생성한 오브젝트를 클릭해보면 Terrain 컴포넌트가 붙여져 있는 것을 확인할 수 있습니다. 터레인의 크기 같은 경우에는 [Mesh Resolution] 탭에서 설정할 수 있습니다. Detail 같은경우에는 최적화와 관련되어 있는 값입니다. [Basic Terrain] 부분입니다. Term Description Draw 지형을 그릴지 여부를 결정합니다. Pixel Error 픽셀 에러는 픽셀이 얼마나 정밀하게 그려질지를 나타냅니다. 값이 높을수록 픽셀의 정밀도가 높아지지만 그만큼 리소스를 많이 잡아 먹기에 적절히 설정해야 합니다. Base Map Dist 모든 맵의 텍스처를 그릴 것..
Occlusion Culling 찍먹하기 큐브를 몇가지 생성해준 다음 [Occluder Static]으로 설정했습니다. 오클루전 컬링기능 사용하기 위해 [Window] -> [Occlusion Culling]을 눌러줍니다. Smallest Occluder Smallest Occluder값을 설정하게 되면 파란색 테두리 영역의 크기가 달라집니다. 파란색 영역은 오브젝트를 Occluder로 인식할 최소 크기입니다. 이 값보다 작은 크기를 갖는 오브젝트는 다른 오브젝트를 가리지 않는다고 판단합니다. 사진 속 파란색 큐브의 높이가 3m이고 Smallest Occluder가 10으로 설정되어 있을 때는 뒤의 빨간색 오브젝트를 가리지 못하게 됩니다. ( 3m < smallest occluder) Smallest O..
설명에 앞서 셰이더 개념에 대해 굉장히 설명을 잘해준(? 솔직히 그냥 내가 올리고 싶었기 때문) 사진이 있어서 가져와봤다 오브젝트의 트랜스폼이 움직인다는 것은 Mesh가 움직이는게 아닌 곧 Vertices들의 이동이라는 점! 셰이더를 하게되면 MVP개념에 대해 알아야 하는데 이 사진이 도움이 된다 점들의 조합으로 메쉬가 되고 모델들만 있는 공간을 Model(Local/Object) Space라고 부른다 화면에 보이는 모든 오브젝트는 카메라를 통해 비춰지게 된다 그 공간을 View(Camera) Space라고 부른다! 꼭 기억해두길 바란다!!!!! 그렇게 카메라에 비치는 것들은 이제 모니터상에 보여지게 되는데 Projection이라는 과정을 거치게 된다!!! 3D공간을 2D화면으로 보여주게 하는! Clip..
[Window] -> [Rendering] -> [Ligthing]을 선택해주자 Ligthing에서 [Enviroment]를 클릭해주면 Other Settings을 펼쳐주고 Fog를 활성화 해주면 된다 가까운곳은 잘보이지만 장소가 먼 곳은 Fog로 인해 잘 보이지 않게 된다 Fog를 사용해서 카메라에 닿지 않는 장소나 보이지 않게 하고 싶은 장소를 가리고 오브젝트등을 비활성화 하는 등 다양한 방식을 통해 최적화에 도움이 될 수 있다(고 한다 맞나?)
코딩을 하다보면 이렇게 Layer를 필요로 할 때가 있다 몬스터의 레이어 순서(번호)가 바뀔 수 있지 않냐? 그럴때마다 monsterLayer의 번호를 바꿔주긴 귀찮으니 LayerMask에 있는 Monster라는 이름의 Layer를 찾아서 번호로 바꾸어주면 된다! LayerMask는 여기서 관리할 수 있다!
https://docs.unity3d.com/kr/530/Manual/SupportedEvents.html 지원되는 이벤트 - Unity 매뉴얼 이벤트 시스템은 다수의 이벤트를 지원하며 사용자가 작성한 입력 모듈을 통해 한층 더 효율적으로 커스터마이징할 수 있습니다. docs.unity3d.com 유니티 공식 홈페이지에서 EventSystem에 들어가 있는 기능들에 대한 설명이다 EventSystem를 사용하기 위해선 상호작용할 오브젝트에 Raycast를 받을 수 있어야 한다
❓Render PipeLine이란? Scene의 내용들을 취하여 컬링(culling), 렌더링(Rendering), 포스트프로세싱(post-processing)등의 작업을 수행하고 그것을 스크린에(모니터) 표시하는 역할을 한다 Unity는 built-in URP, HDRP같은 서로 다른 렌더 파이프라인을 제공한다 📌 built-in URP Unity에 기본적으로 설정되어 있는 Default 렌더 파이프라인이다 SRP(Scriptable Redner Pipeline)에 비해 제한적이다 포워드 렌더링 패스와 디퍼드 렌더링 패스 중 한가지를 선택할 수 있으며 커맨드 버퍼와 콜백으로 기능을 확장할 수 있다 📌SRP(Scriptable Redner Pipeline) SRP를 사용하면 스크립트(Script)로 렌더..
빠밤★ 신기하쥬? 코드는 조만간 리뷰할게유~.~