일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Three(Two) Tone Shading
- URP로 변경
- 벡터
- Specular
- OculusMotionVectorPass
- 프로그래밍 기초
- ColorGradingLutPass
- ASW(Application SpaceWarp)
- Virtual Byte
- Toon Shader
- 가상 바이트
- Rim Light
- Cell Look
- 메모리 누수
- 게임 수학
- 작업 집합
- 3d
- VR
- Cell Shader
- 개인 바이트
- working set
- Private Bytes
- URP
- Windows Build
- AppSW
- C언어
- Today
- Total
목록분류 전체보기 (258)
WinCNT
서론 URP 환경에서 AlphaTest 셰이더를 구현하면서 알게 된 내용을 정리해보고자 한다 Cutout? Alpha Test? Alpha Clipping? 이번에 조사하면서 알게된 점은 이 셰이더가 정말 다양한 명칭으로 불린다는 것이었다 일단 이번에 구현하려고 하는 것은 알파 값으로 지정된 부분은 그리지 않고, 그 외의 부분은 그리는 셰이더이다 예를 들어, 다음과 같은 텍스처가 있다고 했을 때 다음과 같이 출력하는 것이 목표이다(아래는 디폴트 머테리얼을 사용한 결과) DirectX에서는 Alpha Test, OpenGL에서는 Cutout이라고 부른다고 하는데, 일단 여기서는 Cutout라고 부르기로 한다 (Alpha Test는 좀 더 광의적인 의미도 있고, Alpha Clipping는 URP의 Lit셰..
서론 유니티에는 비동기 처리를 위한 몇 가지 기법들이 존재한다(멀티 스레드인지는 차치하고) 대표적인 것이 바로 Coroutine, Task, UniTask이다 정말 단순하게 설명하자면 Coroutine는 유니티에서 제공하는 비동기 처리 기법이고, Task는 C#(5.0 이상)에서 제공하는 비동기 처리 기법이다 UniTask는 Task를 Unity에서 효율적으로 사용할 수 있게 Cysharp(Cygames의 자회사)에서 만든 라이브러리라고 보면 될 것 같다 이번에는 UniTask를 설치하고 간단히 사용해본 내용을 정리해보고자 한다 근데 굳이 UniTask를 써야 함? 결론부터 말하자면 굳이 UniTask를 쓰는 게 낫다 필자도 이번에 조사하면서 알게 되었는데 여러 메리트가 있었다 우선 UniTask는 코루..
서론 유니티를 2021.3에서 2022.3으로 버전하던 도중, 버전 업 가이드에 Navigation and Pathfinding이 바뀌었다는 문구가 있었다 Navigation and Pathfinding is moving from the Unity core to the AI Navigation package 조금 조사해보니 예전부터 사용된 빌트 인 네이게이션 시스템도 있는 것 같고, Unity 2022.2 이전이지만 실험적 패캐지로써 사용하는 경우도 있는 것 같았다 (심지어 따로 깃허브에서 소스를 받아서 쓰는 경우도 있었음) 필자의 경우 Unity를 버전 업하니 com.unity.ai.navigation가 1.0.0-exp.4에서 1.1.4로 변경되었다 문제는 그로 인해 사용법과 인터페이스도 좀 바뀐 것..
서론 Unity 카테고리에 작성할 건 아닌 것 같지만 최종적으로는 Unity와 같이 쓸 예정이니 일단 여기에 정리해본다 PowerShell 스크립트가 있으니 금방할 수 있을 줄 알았는데 역시나 많은 삽질이 있었다(…) 이번에 작성한 Github Actions의 기본 구조 Github Actions에 대한 자세한 설명은 훨씬 좋은 글이 많으니 사용한 부분에 대해서만 간략하게 정리해 가려고 한다 job과 step의 이름은 Action의 Summary 표시되니 잘 설정하는 게 좋다 참고로 필자의 경우 runs-on: [ self-hosted ]에서 설정된 빌드 머신은 Windows 운영 체제이다 (GitHub Actions 작성 전에 PowerShell이나 CMD로 테스트한 이유) # Github Action..
서론 신 기능이라기에는 좀 시간이 지났지만, 오큘러스에는 Application SpaceWarp (줄여서 AppSW, 혹은 ASW)라는 프레임 보간 기능이 있다 이 기능을 사용하면 VR기기가 32fps를 무려 72fps로 보간해서 출력해준다!! 이 기능을 사용하기 위해서는 쉐이더에 모션 벡터 패스가 있어여 하며, MotionVectors 패스의 아웃풋이 이상하면 AppSW의 프레임 보간도 이상하게 된다 그래서 디버깅을 위해 VR 기기에서 MotionVectors 패스의 아웃풋을 간단하게 확인하는 디버그 모드를 제공하는데, 예전에 한 번 쓴 적이 있었지만 따로 정리해두지 않아서 아쉽게도 까먹었다 …가 이번에 다시 알게 되서 제대로 정리해둘까 한다 주의점 VR 기기에서 MotionVectors 패스의 아웃풋..
서론 우여곡절이 있었으나 아무튼 라이트 맵를 Bake하는 에셋(Bakery)은 도입할 수 있었다 https://wincnt-shim.tistory.com/357 유니티의 Bakery(라이트 맵 생성 에셋) 적용기 서론 Bakery라는 에셋을 적용하면서 삽질했던 것을 정리해봤다 참고로 Bakery는 라이트 맵을 생성해주는 에셋이며 아래의 페이지에서 구입할 수 있다 Bakery - GPU Lightmapper Bakery - GPU Lightmapper | 레벨 wincnt-shim.tistory.com 하지만! 여기서 끝이 아니다!! 라이트 맵의 확인을 위해 Unity의 Lit 셰이더(사실 조금 다름)로 확인했지만 프로젝트에서 실제로 사용할 셰이더는 다른 셰이더이기 때문! 즉, 커스텀 셰이더의 머티리얼을 ..
서론 이번에는 Unity에서 커스텀 ShaderGUI를 구현해보기로 했다 ShaderGUI란 특정 셰이더의 머티리얼에 대한 Inspector의 UI를 제작할 수 있게 해주는 클래스라고 생각하면 될 것 같다 이 글에 구현하면서 알게 된 내용을 정리하고자 한다 커스텀 셰이더 GUI를 구현하면 좋은 점? 어디까지나 개인적 의견이지만… 역시 최고의 장점은 머티리얼의 프로터티를 보기 좋게 정리할 수 있다는 점이라고 본다 위는 URP의 디폴트 Lit 셰이더인데 토글, 체크 박스, 셀렉트 박스 등으로 깔끔하게 정리된 것을 볼 수 있다 두번째로는 커스텀 GUI를 통해서 셰이더의 키워드를 설정할 수 있게 된다는 점이다 즉 셰이더에서 #pragma multi_compile과 #pragma shader_feature 등에 ..
서론 CMD(Command Prompt)의 bat파일을 완성해서 달성감에 젖어있을 때, 회사의 빌드 머신은 PowerShell 위주로 돌아간다는 것을 알게 되었다 조금 살펴보니 bat파일의 내용을 못 쓸 것은 아니었지만, 다른 Github Actions 설정들은 전부 PowerShell로 되어 있었기에 이에 맞추기로 하였다 즉, 이번 글은 CMD의 bat파일을 PowerShell로 바꾸면서 발생한 삽집들을 정리한 글이다 하지만 사실 명령어 대부분은 호환됩니다 소제목 그대로 CMD의 명령어는 대부분 호완이 되기 때문에 그대로 사용해도 상관 없다고 한다 역시 Microsoft야! 예를 들어 PowerShell 스크립트에서 Write-Output 대신에 CMD의 echo를 써도 정작 작동하고, Set-Loca..
서론 이번 작업은 Github Actions을 통한 테스트 자동화의 사전 준비라는 느낌이다 물론 테스트 자동화라고 해도 딱히 거창한 것은 아니고, 이번에 할 것은 특히 더 그렇다 아무튼 이번에는 CMD(Command Prompt), 정확히는 bat파일로 오큘러스2의 VR기기를 여러 모로 조작하는 것이 목표일 뿐! 그를 위해서는 ADB(Android Device Bridge)를 사용할 필요가 있다는 것을 알게 되었고, 조사와 시행착오를 통해 알게 된 내용을 정리하고자 한다 adb.exe가 있는 폴더로 이동하자! adb.exe는 자주 사용할 것이기 때문에 아예 처음부터 adb.exe가 있는 폴더로 이동하기로 했다 (물론 환경 변수 등을 설정했다면 딱히 필요 없겠지만) 다음은 예제이다 @echo off @RE..
서론 SpriteRenderer인 오브젝트는 SRP Batcher가 작동하지 않기에 잠깐 조사했던 내용을 정리해봤다 이번에는 결론이 명확하기에 간략하게 정리하려고 한다 Objects have different MaterialPropertyBlocks set 프레임 디버그에서 확인해보면 SpriteRenderer인 오브젝트는 “Objects have different MaterialPropertyBlocks set”라는 문구가 뜨면서 SRP Batcher가 작동하지 않는 것을 볼 수 있다 MaterialPropertyBlock이란? MaterialPropertyBlock은 머티리얼은 같지만 프로퍼티가 약간 다른 오브젝트(예를 들어 색상만 다른 경우 등)를 그릴 경우 사용하는 API이다 Unity - Scr..