| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Three(Two) Tone Shading
- 프로그래밍 기초
- Private Bytes
- 작업 집합
- 개인 바이트
- URP로 변경
- VR
- Cartoon Rendering
- Cell Look
- Virtual Byte
- Cell Shader
- 가상 바이트
- 게임 수학
- ASW(Application SpaceWarp)
- Specular
- 벡터
- AppSW
- Rim Light
- C언어
- working set
- Toon Shader
- 3d
- 메모리 누수
- OculusMotionVectorPass
- Windows Build
- URP
- ColorGradingLutPass
- Today
- Total
목록전체 글 (261)
WinCNT
발생한 이슈옛날에 다른 프로젝트에서 FBX를 임포트할 때 Blend Shape의 일부가 누락되는 이슈가 발생해서 잠깐 도와준 적이 있었다결론부터 말자하면, 이번 이슈는 FBX가 원인도 아니고 Unity가 원인도 아니었다굳이 말하자면 데이터 파싱에 대한 휴먼 에러라고 보는 게 맞는 것 같다테스트 안 했냐!!즉, 알고보니 별거 아니었다는 얘기…하지만 비망을 위해 간단하게나마 정리해두려고 한다이슈 상세누락되는 Blend Shape에 대해서는 아티스트 분께서 잘 조사해두셨다덕분에 편하게 조사할 수 있었다누락되는 Blend Shape는 앞부분이 일치하는 Blend Shape였다예를 들면, Lip_A와 Lip_AA라는 Blend Shape가 있다고 하면 Lip_A가 누락되고 있었다아래는 문제가 됐던 코드using ..
서론셰이더에서 키워드는 뗄래야 뗄 수 없는 존재셰이더 코드 부분에서의 사용은 둘째 치고, Inspector에서 컨트롤할 수 없으면 그림의 떡이기 때문에 ShaderGUI의 구현도 잘 생각해햐 한다 하지만! 유니티에서는 그 부분을 쉽게 구현할 수 있는 기능을 제공한다!또한 일반적으로 사용되거나 단순 레벨의 키워드는 ShaderGUI 없이도 구현할 수 있게 해준다그냥 커스텀 패키지 도입하겠다는 나쁜 말은 ㄴㄴ~Properties에서의 사용 예시우선은 Properties에서 어떤 식으로 사용되는지 살펴보자Properties{ // Toggle [Toggle] _LIGHTING("Lighting On/Off", Float) = 0 // KeywordEnum [KeywordEnum(NML,P..
서론글 쓸 거리가 점점 쌓이고는 있지만, 그건 두고 우선적으로 해보고 싶은 게 생겼다!그건 바로 사이버 펑크 애니메이션에 나오는 Sandevistan 이펙트!!(사이버 펑크 애니 보진 않았지만…)우선은 작업 결과부터…나름 잘 나온 것 같다!핵심은 바로 BakeMesh!우선은 소스 코드부터!public void CreateEcho(float echoDuration){ if (!skinnedMeshRenderer) return; if (!echoPrefab) return; // 현재 포즈를 복사 Mesh bakedMesh = new Mesh(); skinnedMeshRenderer.BakeMesh(bakedMesh); // 오브젝트 생성 var echo = Instant..
발생한 이슈한눈에 알기 쉽게 타이틀에 어느 정도 원인까지 쓰긴 했지만, 최초로 이슈에 대해서 인지한 것은 마치 누군가가 거울로 태양 빛을 반사해 눈에 쏘는 것 마냥 눈뽕(?)이 있다고 느껴졌을 때였다좀 더 조사해보니 시점(카메라)의 특정 위치와 각도에서 오브젝트의 일부분이 엄청나게 반짝거린 다는 것을 알게 되었다이슈 상세화면 크기에도 영향을 받고 위치가 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 방식으로 변경한 건 ..