일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Cell Shader
- Three(Two) Tone Shading
- working set
- URP로 변경
- 가상 바이트
- Cartoon Rendering
- URP
- ASW(Application SpaceWarp)
- 3d
- C언어
- OculusMotionVectorPass
- 작업 집합
- 메모리 누수
- VR
- 프로그래밍 기초
- Virtual Byte
- Windows Build
- Private Bytes
- Specular
- Cell Look
- 게임 수학
- ColorGradingLutPass
- Rim Light
- 벡터
- AppSW
- 개인 바이트
- Toon Shader
- Today
- Total
목록분류 전체보기 (258)
WinCNT
발생한 이슈한눈에 알기 쉽게 타이틀에 어느 정도 원인까지 쓰긴 했지만, 최초로 이슈에 대해서 인지한 것은 마치 누군가가 거울로 태양 빛을 반사해 눈에 쏘는 것 마냥 눈뽕(?)이 있다고 느껴졌을 때였다좀 더 조사해보니 시점(카메라)의 특정 위치와 각도에서 오브젝트의 일부분이 엄청나게 반짝거린 다는 것을 알게 되었다이슈 상세화면 크기에도 영향을 받고 위치가 0.01만 틀어져도 이슈가 발생하지 않고 해서 재현이 힘들었다아래는 Editor에서 어찌저찌 재현한 이미지다 버그 처음 봤을 땐 이거 생각났음ㅎㅎ원인 추척섬광탄마냥 눈뽕을 만드는 건 타이틀에도 살짝 적었듯이 바로 Bloom이었다그렇다고 Bloom이 나쁜 건 아니다 이것때문에 끌 수도 없고Bloom은 1이 넘어가는 픽셀에 대해서 자신의 역할을 다 했을 뿐이..
서론아트 팀에서 포션이 움직이면 그 안의 액체가 흔들렸으면 좋겠다(…)는 리퀘스트가 있었다하지만 그것만을 위해 유체 역학을 넣을 실력도 없고, 성능을 생각하면 넣어서도 안 된다! 다행히도 셰이더와 스크립트로 적당히 그럴듯한 Liquid 셰이더를 구현할 수 있을 것 같아서 이쪽으로 진행해봤다레퍼런스는 아래의 유튜브 영상!https://www.youtube.com/watch?v=DKSpgFuKeb4 다른 비슷한 영상들도 많았지만 이쪽이 제일 좋아서 많이 참고했다특히 포션을 뒤집었을 때 액체가 위화감 없이 아래로 이동하는 부분이 특히 좋았다우선은 샘플 코드부터!이번에는 Shader와 그걸 보조하는 Script를 작성했다액체의 흔들림을 구현하기 위해서는 Delta Time이나 직전 프레임의 Transform 정..
서론높이 안개(Height Fog)를 구현한 건 좋은데 구조에 좀 불만이 있었다이대로라면 여러 귀찮은 점이 발생하므로 Global Shader Variable를 사용해 수정하기로 했다무엇이 문제인가?그 때는 셰이더가 하나여서 우선 Height Fog에 관련된 변수들을 전부 CBUFFER에 넣고 구현했다CBUFFER_START(UnityPerMaterial) //...생략... // Height Fog sampler2D _HeightFogNoise; float _HeightFogNoisePower; float _HeightFogNoiseSpeedX; float _HeightFogNoiseSpeedY; half4 _HeightFogColor;..
서론게임에서 사용되는 안개 효과는 여러 종류가 있는데, 그 중에 높이 안개(Height Fog)라는 것이 있다Exponential Height Fog User Guide 기본적으로는 이름 그대로 높은 고도에서 낮은 고도를 바라볼 때 보이는 구름과도 같은 안개를 구현한 효과이다그런데 이를 잘 활용하면 고도가 딱히 높지 않아도 발 밑에 안개를 형성해서, 늪지대나 불온한 분위기 등등 여러 응용이 가능해지기 때문에 아트 팀의 요망에 따라 구현하기로 했다왜 반투명 안 써요?그야 VR에서는 반투명이 특히나 더 무겁기 때문이지!Fog는 기본적으로 Lerp로 색 보간을 해서 구현하는 경우가 많기에 일반적으로는 반투명보다 가벼울 것이다Volumetric fog 같은 특정 영역에만 영향을 미치고 싶은 거면 이야기는 좀 다..
발생한 이슈커스텀 셰이더에서 Scale이 커지니 하이라이트가 지저분해지는 이슈가 발생했다원인 분석을 위해 파라미터들을 하나씩 확인해보니 Scale이 커짐에 따라 Normal 값이 이상해진다는 사실을 알게 되었다이슈 상세// Normal Map 적용이 끝난 후의 Normalreturn normal;return normal * 0.5 + 0.5;프래그먼트 셰이더에 위와 같은 return 값을 둬서 확인해봤다그러자 다음과 같이 스케일이 커짐에 따라 노멀 값이 1을 넘어가서 Bloom이 되고 있었다!발생 원인이 아니었던 것 - 역전치행렬 관련처음에 떠오른 것은 비균등 스케일로 인해 법선이 무너지는 현상이었다(노멀에는 월드 행렬의 역전치행렬을 곱해야 한다는 그거) 하지만 균등 스케일인 경우에도 해당 이슈는 발생..
서론프로젝트에서 Visual Effect Graph(줄여서 VFX Graph)를 도입하자라는 제안이 있었다물론 아트 실력이 일천한 필자지만, 나중에 연관될 것은 분명했으므로 우선은 도입부터 해봤다(참고했던 사이트는 맨 밑에 정리)Visual Effect Graph(VFX Graph)란 뭐지?자세한 건 공식 문서Unity Visual Effect Graph 쉽게 말해 컴퓨터 셰이딩(즉 GPU)을 사용하는 업그레이드된 파티클 시스템이라고 할 수 있겠다(할 수 있나?)대부분의 연산을 GPU에서 하기 때문에 기존의 파티클 시스템보다 대량의 파티클을 처리할 수 있다는 장점이 있다 대신 물리 연산을 유니티 엔진의 Physics System을 사용하지 못 하고(Depth Buffer를 이용한다는 것 같다),GPU의 ..
서론예전에 다른 프로젝트에서 Dithering를 구현해본 적이 있다https://wincnt-shim.tistory.com/395 카메라와 오브젝트가 가까울 때 Dithering해서 반투명처럼 보이게 하는 셰이더 구현해보기!서론 이번에는 카메라와 오브젝트가 가까워졌을 때, 디더링을 통해 오브젝트를 반투명처럼 보이게 만드는 셰이더에 대해서 정리하고자 한다 특허에 대한 얘기를 듣기도 했고, 왜 이러한 이런wincnt-shim.tistory.com 그 때는 카메라와의 거리에 따라 Bayer Matrix 알고리즘을 이용한 디더링이었다하지만 이번에는 방식을 바꿔서 Alpha 값에 따라 Blue Noise를 통한 디더링를 구현하고자 한다!Bayer Matrix의 문제점들사실 Blue Noise 방식으로 변경한 건 ..
서론저번에 간단 Bar Gauge UI 셰이더를 만들었으나 태스크는 그게 끝이 아니었다이어서 만들어 볼 건 이런 느낌의 돌면서 채워지는 Gauge UI이걸 뭐라 부르는지는 몰라서 일단 Dial Gauge UI라고 부르기로 하면서 정리해봤다다 만들고 커밋한 후 Radial Gauge라고 부르는 게 더 맞다고 느꼈으나 뭘 어쩌겠어Dial Gauge UI Shader의 목표목표 자체는 Bar Gauge 때와 크게 다르지 않았다마찬가지로 Fill Amount를 조정하는 것만으로 게이지가 움직이도록 하면 됐다이번에도 Backgound가 있고, 조정된 위치에 Gauge의 텍스처가 있기에 별 다른 위치 조정이 없도록 하는 것은 같았지만, 회전하는 피벗은 조정하게 해야 한다는 이리저리 어려운 문제가…Dial Gauge..
서론 매우 슬프게도 VR에서는 Canvas나 관련 컴포넌트(Image 등)의 성능이 좀 많이 떨어진다 하지만 UI가 없는 건 아니라 열심히 구현해야 한다는 게 또 힘든 점 아무튼 이번에는 HP Bar 등의 Gauge UI! Alpha Test를 이용해서 일반적인 Qaud에 Gauge UI 셰이더를 만들어봤기에 정리해보고자 한다 Bar Gauge UI Shader의 목표 여기서 Bar Gauge란 HP 같은 상하, 혹은 좌우로 움직이는 UI를 말한다 이번 태스크의 목표는 머티리얼의 Fill Amount란 값을 조정하는 것만으로 움직이게 하는 것였다 일단 다음과 같이 Bar Gauge의 Backgound가 있고, 조정된 위치에 Bar Gauge의 텍스처도 있기 때문에 별 다른 위치 조정도 하지 않는 것도 중..
서론 그냥 일반적인 연출 표현 중 하나인 Vignette은 사실 VR에서 그 위상이 대단하다 그 이유는 바로 멀미 방지를 위해 Vignette이 주로 사용되기 때문!! (이런 Vignette를 따로 Tunneling Vignette라고 부르기도 한다) Vignette는 포스트 프로세싱으로도 구현이 가능하긴 하지만 매우 유감스럽게도 VR에서는 포스트 프로세싱의 사용을 최대한 피해야 하기 때문에… 현 프로젝트에서는 카메라의 바로 앞에 오브젝트를 두고 그 오브젝트에 구명을 뚫는 방식으로 구현하고 있다 하지만 현 프로젝트의 방식에도 문제가 있었으니… 현 방식의 문제점 ACNVR에서도 알 수 있듯이 멀미 방지를 위한 Vignette에는 구멍의 주변 부분이 그라데이션하게 반투명해지는 것을 알 수 있다 참고로 반투명..