디더링, 안티앨리어싱 및 색상
디더링
디더링은 두 색상을 픽셀 패턴으로 혼합하여 세 번째 색상이나 그라데이션을 가장하는 기법입니다.
사용 시기:
- 크고 평평한 영역 (48px 이상): 하늘, 큰 그림자, 배경 등.
- 타이트한 팔레트 (4-16색): 더 많은 톤이 필요할 때.
- 질감 표현: 돌, 모래, 천.
사용하지 말아야 할 때:
- 32px 미만 스프라이트. 노이즈처럼 보입니다.
- 캐릭터 얼굴, 또는 움직이는 모든 것. 프레임 사이에서 반짝거립니다.
- 세 번째 팔레트 색상으로 더 잘 표현될 수 있는 곳. 디더링보다 램프 단계를 선호하세요.
도구:
| 필요 | 도구 |
|---|---|
| 두 색상 사이의 그라데이션 | apply_dither_gradient(..., color_start, color_end, horizontal). 이는 ordered Bayer 4×4입니다. |
| 균일한 질감 또는 혼합 | apply_dither_pattern(..., color_a, color_b, density). 밀도 0.5는 체커보드, 0.25와 0.75는 드문 점 패턴입니다. |
| 수동 배치 패턴 | draw_rows로 패턴을 직접 입력. 패턴 참조를 확인하세요. |
규칙:
- 인접한 램프 색상 사이에서만 디더링하세요. 멀리 떨어진 두 색상은 혼합이 아니라 격자처럼 보입니다.
- 전환 대역을 좁게 유지하세요 (2-6px). 단색 영역이 형태를 담당합니다.
- 윤곽선이나 실루엣 가장자리를 가로질러 디더링하지 마세요.
안티앨리어싱 (AA)
AA는 곡선이나 대각선이 계단질 때 중간 색상을 배치하여 계단 현상을 부드럽게 합니다.
- 32px 이상에서 내부 선과 큰 곡선에만 사용하세요. 투명 배경에 대한 외부 실루엣은 경계를 뚜렷하게 남겨둡니다. AA를 적용한 가장자리는 다른 배경에서 후광(halo)이 생깁니다.
- 각 계단의 안쪽 모서리에 AA 픽셀 1개를 배치하고, 선과 채우기 사이의 색상을 사용하세요. 긴 계단의 경우 2px(더 밝은 것과 더 어두운 것)를 사용합니다.
view_sprite(영역 확대)로 결과를 확인하세요. 선이 더 두꺼워 보이게 만드는 AA는 잘못된 것이므로 제거하세요.
색상 쉐이딩
- 모든 재질의 램프는
generate_color_ramp(base, steps=3-5, hue_shift_degrees=15-30)로 생성하세요. 그림자는 파란색 또는 보라색 쪽으로, 하이라이트는 노란색 또는 주황색 쪽으로 치우칩니다. - 재질 간 대비는 색상(hue)뿐만 아니라 명도(lightness)로도 강조하세요. 빠른 확인 방법: 복사본에
adjust_hsl(saturation_shift=-1)을 적용하면 회색조에서 그림이 읽히는지 알 수 있습니다. - 분위기 전환(밤, 독, 피격 효과) 은 레이어에
adjust_hsl을 사용하거나, 프레임 전체에replace_color/remap_colors_in_cel_range를 사용하세요. - 레트로 팔레트 적용:
apply_palette_preset으로 적용한 후quantize_to_palette를 사용하세요. 같은 램프의 색상을 사용하여 뭉개진 부분은 수동으로 수정합니다.
재질
| 재질 | 표현 방법 |
|---|---|
| 금속 | 높은 대비. 깊은 그림자 옆에 날카롭고 선명한 하이라이트. 그림자 가장자리에 반사광. |
| 돌 | 낮은 대비. 뭉친 질감, 드문 디더 또는 2-3px 덩어리, 이빨 진 가장자리. |
| 나무 | 판재를 따라 더 어두운 단계의 결 방향 선. 옹이는 작은 타원형. |
| 천 | 부드러운 그라데이션, 곡선형 어두운 띠로 표현된 주름, 직조를 위한 수직선 질감. |
| 유리 / 물 | 대부분 배경이 비쳐 보임. 밝은 반사 점, 가장자리 하이라이트, 약간의 색조. |
| 피부 | 붉은빛 그림자가 있는 3-4단계 따뜻한 램프. 디더링 없음. |
폴리싱 패스 후에는 get_color_stats를 호출하여 팔레트를 타이트하게 유지하고, lint_sprite를 호출하여 떠다니는 픽셀을 잡아내세요.