Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- working set
- Cell Look
- Windows Build
- Toon Shader
- Rim Light
- URP
- Specular
- OculusMotionVectorPass
- Cartoon Rendering
- ColorGradingLutPass
- Private Bytes
- Cell Shader
- Virtual Byte
- AppSW
- 벡터
- Three(Two) Tone Shading
- ASW(Application SpaceWarp)
- 개인 바이트
- 가상 바이트
- URP로 변경
- VR
- C언어
- 메모리 누수
- 작업 집합
- 프로그래밍 기초
- 게임 수학
- 3d
Archives
- Today
- Total
WinCNT
텍스처의 가장자리 패딩하기 본문
발생한 이슈
스프라이트 애니메이션 셰이더를 작성하던 중, 잘라낸 텍스처의 가장자리 부분이 의도대로 출력되지 않는 이슈가 발생했다
이슈 상세
예를 들면 아래와 같이 잘라온 부분의 가장자리가 옆 픽셀과 블렌딩된 상태가 된다
참고로 텍스처의 원본은 제대로 나눠져 있다
발생 원인
원인은 텍스처 샘플링에 의한 보간이라는 사실 자체 금방 눈치 챘다
(텍스처 샘플링에 대한 설명은 생략)
그렇다고 해결책이 금방 떠오르는 건 아니지만...
참고로 샘플링 필터 모드를 point로 변경해도 이슈가 해소되긴 하지만 근본적인 해결책은 아니다
해결법
딱히 가장자리가 필요 없을 예정이었기 때문에 1셀의 크기를 약간 크게 하고, 시작 위치를 약간 움직여서 잘라내는 로직을 추가해서 해결했다
소스 코드는 다음과 같다
Varyings vert(Attributes IN)
{
Varyings OUT = (Varyings)0;
OUT.PositionHCS = TransformObjectToHClip(IN.PositionOS.xyz);
// 1개의 셀이 나오도록 조정
const float2 col_row = float2(_Column, _Row);
// UV Edge Padding
const float2 max_col_row = float2(1.0, 1.0) / float2(_Column, _Row);
float2 cell = IN.UV / col_row;
cell = cell * (max_col_row - _BaseMap_TexelSize.xy * _Padding) / max_col_row;
const uint index = uint(_Fps * _Time.y) % (_Column * _Row);
// 열 인덱스
uint column_index = index % _Column;
// 행 인덱스
uint row_index = _Row - (index /_Column) % _Row - 1;
// UV Edge Padding
const float2 offset = (float2(column_index, row_index) / col_row) + (_BaseMap_TexelSize.xy * (0.5 * _Padding));
OUT.UV = cell + offset;
return OUT;
}
마무리
이번엔 딱히 없음
아무튼 이걸로 해결!
'Unity > Unity 개발 중 발생한 이슈 정리' 카테고리의 다른 글
VR기기(Oculus Quest 2)에서 GPU Utilization(GPU U)가 FinalBlit에서 급격히 오르는 이슈 (0) | 2023.07.04 |
---|---|
Bakery(라이트 맵 생성 에셋)로 작성한 라이트 맵의 텍스처 설정이 이상해서 라이트 맵이 제대로 적용되지 않던 이슈 (0) | 2023.06.30 |
Normal Map이 격자 형태로 출력되는 이슈 (0) | 2023.03.24 |
Physics.Raycast가 (Mesh)Collider의 BackFace를 Hit 못 하는 이슈 (0) | 2023.02.28 |
URP 14이전 버전에서 커스텀 Post Processing 사용이 안 되는 이슈 (0) | 2023.02.13 |