【p5js shader翻译教程】1.3 什么是shaders?

本文介绍了shaders在图形渲染中的关键作用,它是运行在GPU上的小程序,能显著提升图形绘制速度。文章通过比较CPU和GPU的工作方式,解释了shaders如何通过并行处理实现复杂图形的实时渲染,以及如何在p5js中应用它们。
摘要由CSDN通过智能技术生成

该文章为翻译而来,原文链接 传送门

该系列翻译文章将不定期更新,将用于学习记录,若有侵权,请联系我。

1.3 什么是shaders?

世界上到处都在使用shaders,所以你肯定见过它们,尽管你自己从未写过一个。不论是计算机游戏还是音乐会的视觉效果,shaders对于图形的快速实时渲染是必要的。

如果你玩电脑游戏,那么其中的每一个3D物体都有一个shaders连接到它的材料上。shaders决定了物体的颜色,也决定了光线如何从物体上反射,它是否透明等等。此外,如果你曾经去过一场音乐会,那里的视觉效果对声音或动作有反应,这些很可能就是shaders。

shaders是一个小程序,完全运行在你的显卡上,即GPU(图形处理单元),而不是你的计算机的CPU(中央处理单元)。这使得它的速度惊人。它们实际上很容易编写,而且一旦你理解了它们工作的基本原理,就可以在p5js中简单实现。

由于shaders是一个单独的脚本,你只需把它放在sketch.js以外的一个单独文件中,就像加载的声音文件或图像一样,我们一会儿就会说到这一点。首先,理解为什么shaders产生的效果与单单p5js代码所产生效果的不同是很重要的。

shader是如何工作的?

到目前为止,当你在p5js的draw()函数中绘制图形时,你所做的工作主要依靠CPU

CPU的工作方式是依次进行每一次计算–即你所绘制的像素或形状的每一次移动。如果你仔细观察你的屏幕,你会看到它是由每一个小像素组成的。当你使用CPU绘图时,计算机必须执行所要求的每一个操作(例如绘制红色,或增加亮度),一次一个像素。如果你的屏幕是2,560×1,600像素,那就是每帧4,096,000个操作。在每秒60帧的情况下,就是每秒245,760,000次操作。如果你的屏幕是4k的,那就是这个数字的两倍。这对基本程序来说是没有问题的,但你可能已经注意到,你的绘图越复杂,整个程序的运行速度就越慢

相反,你的GPU(图形处理单元)能够通过使用shader进行所谓的并行处理。这意味着,你通过使用shader在草图中绘制的所有内容都是一次性绘制的,所有4,096,000个操作都是如此。 因此,shader是一种令人难以置信的优化方式,可以在不降低绘制速度的情况下制作更复杂的图形。

为了理解shader的作用,可以把CPU想象成一条管道,画布上的所有像素都必须通过这条管道,一次一个,告诉它们应该属于什么颜色。但使用shader之后,CPU处理所有的计算,GPU处理实际的着色。现在想象一下,每个像素都有自己的管道,我们可以计算并告诉你画布上的每个像素应该有什么颜色(同时)。这就是shader的作用。

这有点像用多色喷灯一次性画完整个蒙娜丽莎。如下面视频所示。

NVIDIA现场形象展示CPU和GPU工作原理上的区别

写在最后

我创建了一个公众小号【p5js艺术小站】,里面会更新各种作品、教程等精彩内容,欢迎各位大佬关注指导,共同进步!!!

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxwonder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值