일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Cartoon Rendering
- working set
- Cell Look
- Specular
- Cell Shader
- URP
- AppSW
- Windows Build
- Toon Shader
- Rim Light
- 3d
- 작업 집합
- 게임 수학
- 메모리 누수
- OculusMotionVectorPass
- 프로그래밍 기초
- Private Bytes
- 벡터
- URP로 변경
- 가상 바이트
- VR
- ColorGradingLutPass
- Three(Two) Tone Shading
- ASW(Application SpaceWarp)
- 개인 바이트
- Virtual Byte
- C언어
- Today
- Total
목록Unity (90)
WinCNT
서론 CI와 빌드 자동화를 위한 무언가(?)를 작업 중이었다 유니티에서는 빌드하는 스크립트를 간편하게 짤 수 있고, 참고 자료도 많아서 문제는 없었다 그런데 빌드 옵션에 BuildOptions.AutoRunPlayer를 지정했을 경우, 빌드 시에 연결된 디바이스가 없으면 빌드 파일 자체가 안 만들어진다는 것을 알게 되었다 안드로이드 기기에 연결되어 있으면 Build And Run, 그렇지 않으면 Build만 하고 싶었기에 그 방법을 찾아봤다 방법 1) UnityException: No Android devices connected 체크 우선 처음으로 성공한 것은 BuildPipeline.BuildPlayer의 리턴 값인 BuildReport를 체크하는 방법이었다 빌드 시에 디바이스가 연결되어 있지 않으면..
발생한 이슈 CMD(Command Prompt)로 Unity의 Editor 스크립트의 메소드 실행해보던 도중, 로그에 에러가 발생했었다 결론부터 말하자면 현재 프로젝트의 유니티 버전과 CMD로 실행한 유니티 버전을 다르게 설정한 필자의 휴먼 에러인 것으로 보인다 따라서 Package [com.unity.render-pipelines.universal@12.1.8] cannot be found에 대한 근본적인 해결책이 아닐 수도 있다 아무튼 비망의 의미도 겸해서 정리해봤다 이슈 상세 출력된 에러 메시지는 다음과 같다 An error occurred while resolving packages: Project has invalid dependencies: com.unity.render-pipelines.un..
서론 이른바 커맨드 라인(macOS 터미널이나 Windows 커맨드 프롬프트 등)을 이용해서 유니티의 스크립트의 메소드를 실행하는 방법에 대해 조금 조사해봤다 지금 환경이 Windows니 커맨드 프롬프트(CMD)로 실행하는 방법을 조사했다 참고로 커맨드 라인으로 Unity를 실행하는 건 보통 테스트나 빌드 자동화를 구축할 때 사용되곤 하지만…지금은 이미 더 좋은 툴이 많아서 커맨드 라인만으로 구축하는 경우는 많이 없을 듯 하다 Unity 에디터 커맨드 라인 인자 이건 역시 공식 문서에 모든 게 나와있긴 하다😇 Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼 Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼 Mac OS의 경우, 다음을 터미널에 입력하여 Unity를 실행해야 합니다. doc..
발생한 이슈 유니티의 에디터 상에서는 문제 없는 것처럼 보이는데, VR기기(Meta Quest2)에서는 일부 오브젝트의 드로우 처리가 이상하지는 이슈가 발생했다 가장 큰 문제는 왼쪽은 문제 없는데 오른쪽 화면만 이상해진다는 것이었다 이슈 상세 환장하게도 VR기기에서 캡처를 해도 딱히 문제 없이 나와서 이번에는 에비던스도 없다… 에비던스 없이 글로만 쓰면 뭔가 거짓말 치는 느낌이 들긴 하는데 어쩔 수 없지 아무튼 일어났던 문제점을 대충 정리하자면 다음과 같다 우선 Nova Shader로 만든 특정 이펙트가 왼쪽으로 고개를 기울이면 오른쪽 화면에서 드로잉되지 않는 이슈가 발생했다 그리고 드로잉되는 상태에서도 지면에 있을 이펙트가 공중에 떠보인다는 위화감도 존재했다 (참고로 한쪽 눈으로만 보면 위화감이 사라졌..
발생한 이슈 파티클 시스템으로 만든 이펙트가 제대로 배칭되지 않는 이슈가 발생했다 이슈 상세 실제 씬에서 프레임 디버그를 확인해보면 다음과 같이 DrawTransparentObjects의 Set Pass Call이 93이나 되는 것을 확인할 수 있었다 확인을 위해서 문제의 오브젝트를 11개만 올린 씬에서는 다음과 같은 결과가 나왔다 오브젝트당 파티클 시스템이 2개 있으므로 각자 따로 그려진다면 22번 그려질 것이다 하지만 실제 결과는 16번으로 나왔다 프레임 디버그를 통해 드로잉된 순서를 확인해보면 카메라와의 거리와 머티리얼이 같은 오브젝트들(6그룹)만이 배칭이 적용된 것을 확인할 수 있었다 발생 원인 정확한 원인은 찾지 못 했다…어디까지나 추론이 섞인 원인이었다 그래도 해결했으니 문제 없지 않을까? 첫..
발생한 이슈 다른 팀(?)의 프로젝트의 최적화 작업을 돕던 도중, 유니티짱 툰쉐이더 Ver2.0(UTS2)이 적용된 캐릭터를 확인하던 중에 2가지 문제점이 있다는 사실을 알게 되었다 하나는 Outline이 제대로 나오지 않는다는 점이었고, 다른 하나는 SRP Batcher가 제대로 작동하지 않는다는 점이었다 이슈 상세 빨간색 Outline을 그렸을 때는 다음과 같은 현상이 발생했다 UTS2의 Outline을 Active로 하면 다음과 같은 이유로 SRP Batch가 깨지는 것을 볼 수 있다 💡 SRP : Node use multi-pass shader 발생 원인 Outline관련 이슈 삽질의 과정은 생략하고, 결론부터 말하자면 Culling Mode 설정의 문제였다 매뉴얼을 확인해보니, UTS2의 Out..
서론 빌드 리포트에서도 잠깐 다뤘지만, 유니티에서 빌드 전 혹은 빌드 후에 실행하고 싶은 처리가 있을 때 어떻게 하면 되는지에 대해서 간단하게 정리해보고자 한다 빌드 직전인 경우! IPreprocessBuildWithReport using UnityEditor.Build; using UnityEditor.Build.Reporting; public class PreprocessBuildTest : IPreprocessBuildWithReport { // 실행 처리 순서(작은 순서로 먼저 호출됨) public int callbackOrder => 1; public void OnPreprocessBuild(BuildReport report) { } } 빌드 직후인 경우! IPostprocessBuildWith..
서론 커스텀 셰이더에 대해서 커스텀 GUI를 작성하고 Assets > Editor 파일에 저장한 적이 있었다 일반적인 경우라면 이걸로 끝이었겠지만, 문제는 커스텀 셰이더가 Packages에 있는 일종의 커스텀 패키지였다는 점이었다 이 같은 경우에는 Assembly Definition이란 것을 만들고 설정해야 한다는 이야기를 사수한테 들어서 실제로 해본 내용을 정리해보려고 한다 Script will not be compiled because… Assets > Editor에 있던 스크립트를 Packages/대충 커스텀 패키지 폴더/Edior로 옮겨보니 다음과 같은 경고가 발생했다 💡 Script 'Packages/대충 커스텀 패키지 폴더/Edior/대충 커스텀 셰이더 GIU.cs' will not be co..
서론 유니티(의 에디터)에 여러 리소스를 임포트한다고 해도, 그것이 실제로 빌드한 파일에 포함될지는 다른 이야기이다 또한 폴더에 따라 실제로 사용되지 않는 리소스가 포함되기도 하고, 사용하고 있는 리소스가 제외되기도 한다 Plugin이나 Package의 리소스까지 고려하게 되면 끝이 없다 하지만 유니티가 빌드 시에 작성하는 빌드 리포트(Build Report)에는 실제 어떠한 리소스가 포함되었는지, 어느 정도의 용량을 차지하고 있는지가 상세히 나온다 이 글에서는 그 빌드 리포트(Build Report)를 확인하는 방법을 메모해보려고 한다 빌드 리포트(Build Report)를 확인하는 방법 서론을 거창하게 작성한 것 치고는 빌드 리포트(Build Report)를 확인하는 방법 자체는 정말로 간단하다 그냥..
서론 유니티의 게임 오브젝트, 컴포넌트에 대한 == null 체크가 무겁다는 것은 Rider조차 알고 있는 사실 몰라도 Rider가 알려주는 사실이라도고 한다 그렇다고 Null 체크를 아예 안 할 수도 없고, 남의 코드를 최적화하는 상황에 처해서, 굳이 여기서 Null 체크 안 해도 같은데…라고 생각해도, 코드를 마음대로 고칠 수 없어서 대안책만 제시할 수 있는 상황일 수도 있다지금 필자의 상황 이번에는 그 대안책을 조사하다가 알게 된 내용을 정리하려고 한다 Fake Null, ReferenceEquals() 등의 이야기는 안 합니다 Fake Null 등에 대해서는 이미 좋은 글이 많아서 밑의 참고 사이트에 정리해봤다 알아두면 좋은 내용이었지만 아쉽게도 현재 필자의 상황과는 맞지 않았다 그래서 Fake ..