还在用贴片做阴影?Cocos Creator 带你通过一维纹理绘制 2D 实时阴影

本文介绍了Cocos Creator 3.3.2如何利用一维纹理生成2D实时阴影,提供了一种不同于传统贴片的方法。详细讲解了实现原理、Shader渲染过程及性能影响,并提供了Demo资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cocos 的布道师正在论坛陆续更新 Cocos Creator 3.x 游戏常用效果技术实现 Demo,Demo 将随着 Cocos Creator 更新迭代,确保在最新版本中可以运行。点击文末【阅读原文】直达论坛专贴,各位开发者有什么想要实现的效果,欢迎留言告诉我们。

c0f555e821e87d716f094efd8628dfb3.jpeg

阴影对于提升场景的真实感和质感有至关重要的作用。Cocos Creator 支持两种 3D 阴影的实现方式:Planar 和 ShadowMap。

  • Planer:通过将阴影生成体投射到阴影接受体的平面来制作阴影;

  • ShadowMap:通过对在光源位置放置相机拍摄 ShadowMap(阴影贴图)来实现的。

这两种方式不仅操作简单,而且实现效果很好。但是对于 2D 游戏,就不那么适用了。很多 2D 游戏的阴影都是通过贴片来实现的。但今天,我们要基于 Cocos Creator 3.3.2 来介绍另一种实现方案:通过一维纹理生成 2D 实时阴影。

7a3ac0f43b9f485223bd0e2beea37342.gif

Demo 效果预览

Demo 实现了基于 2D 点光源的动态阴影,且对于 Demo 内所有不透明的像素都做了阴影处理,光源和阴影的边缘也做了柔和处理,符合我们对阴影的观察。

接下来我将为大家拆解实现步骤、并深入了解一下实现原理,开发者可选择对应的部分观看。

章节目录

PART 1. 使用方法

PART 2. 实现原理

PART 3. Shader 渲染解析

PART 4. 性能影响

PART 5. 资源链接

PART 1

使用方法

1、创建层级:1dmap

0b7c481a04795b3713dad3abac328b40.png

2、创建 render texture:rt_1dmap 和 rt_picture

325cbf67399a971690a3a2cd5aa0a26e.png

3、创建3个相机:

5166ab726eb2149be33b4c2984f3b9b7.png

  • CameraPicture:使用 rt_picture 作 TargetTexture

9e57f1d11061da5f0ab85572ec6a6f36.png

  • CameraShadow:使用 rt_1dmap 作为 TargetTexture

7e25d345463bbe82fff78deb7bef038a.png

  • Camera:作为 Cocos Creator 创建 UI 时的默认相机

a2d7e856627e068ae81138b4a1b5c1fb.png

4、创建场景

创建渲染到阴影贴图的场景 sprite:shadow_1dmap

注意:其 Layer 必须是 1dmap, 这个作用是用于渲染场景到阴影贴图,具体的原理我们会在后文解释。

f7a1f56157fbb78042b6657281d27361.png

制作一个全屏的空白 sprite 并使用 rt_shadow 作为 sprite frame。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值