卡通渲染 (Toon Shading)

2 / 2

📝 练习目标

实现一种非真实感渲染技术,通过将光照强度量化为离散的色阶,并通常结合边缘检测来模拟卡通或漫画书的视觉风格。

💡 💡 教程内容

学习如何创建卡通风格的非真实感渲染效果。

学习目标

- 理解非真实感渲染的基本原理

- 学习如何量化光照值创建卡通效果

- 掌握使用step函数创建硬边界

核心概念

非真实感渲染

卡通着色的特点:

- 明确的明暗分界线

- 有限的色彩层次

- 平面化的光照效果

- 类似手绘动画的风格

光照量化

将连续的光照值转换为离散的层次:

`glsl

float lightIntensity = dot(normal, lightDir);

float toonLevel = floor(lightIntensity * levels) / levels;

`

硬边界创建

使用step()函数创建明确的明暗分界:

`glsl

float toon = step(threshold, lightIntensity);

`

练习

创建一个卡通风格的着色效果,具有明确的明暗分层。

提示

1. 计算基础的漫反射光照

2. 使用step()floor()函数量化光照值

3. 定义2-4个明暗层次

4. 为每个层次分配不同的颜色强度

5. 可以添加简单的轮廓线效果

预期效果

你应该看到一个具有卡通风格的3D表面,有明确的明暗分界线和平面化的色彩层次,类似动画片的视觉效果。

GLSL 代码编辑器

正确代码预览

当前代码预览