Toon

  • ceil / Ramp Texture / smoothstep
// ===== 계단 음영 표시 - ver. ceil() ====
// [0, 1]범위를 _ToonStep(int)을 곱해서 [0, _ToonStep]범위로 변경.
// ceil함수를 이용하여 올림(디테일 제거 효과).
// 다시 _ToonStep(int)으로 나눔으로써 [0, 1]범위로 변경.
half toonDiffuse = halfLambert;
toonDiffuse = ceil(toonDiffuse * _ToonStep) / _ToonStep;

// ===== 계단 음영 표시 - ver. Ramp Texture ====
// 아니면 Ramp Texture 이용
half3 toonColor = SAMPLE_TEXTURE2D(_RampTex, sampler_RampTex, half2(halfLambert, 0)).rgb;

// ===== 림라이트 ======================
// smoothstep으로 경계를 부드럽게 혼합.
half rim = 1 - NdotV;
half rimIntensity = smoothstep(0.715, 0.717, rim);

// 아니면, 빛방향으로 림
half rimIntensity = rim * pow(NdotL, 0.1);

// ===== 스펙큘러 ======================
// smoothstep으로 경계를 부드럽게 혼합.
half toonSpecular = smoothstep(0.005, 0.01, blinnphongSpecular);

아웃라인

  • https://github.com/DumoeDss/AquaSmoothNormals

  • 버텍스 확장

    • 단순 확장
    • 버텍스 칼라이용 세부 조절
  • 포스트이펙트

기타 예제

  • SSS 텍스쳐
half3 sssColor = mainTex * sssTex;
half3 afterSssColor = lerp(sssColor, mainTex, diffuse);
  • maskTex
채널마스크
r반사영역
g어두어짐
b스펙큘러 세기
a내부 선
  • vertex's color
채널마스크
r어두워짐
g카메라와의 거리
b카메라의 zoffset. 헤어에서 storoke 조절
a윤곽두께

원신

Diffuse RampColor Glossiness Specular LightMap RampRange MetalMap FaceShadow

Ramp

  • layer
    • 낮x5
    • 밤x5
layer
0.0단단한 물체
0.3부드러운 물체
0.5금속/금속 투영
0.7실크/스타킹
1.0피부 텍스처/헤어 텍스처(헤어 부분은 피부가 없음)

Ref