☰
在树莓派上运行《The Book of Shaders》示例:glslViewer 环境搭建与 GLSL 实时编程实战
2026/10/15 3:12:30 网站建设 项目流程

【免费下载链接】thebookofshaders

Step-by-step guide through the abstract and complex universe of Fragment Shaders.

项目地址:https://gitcode.com/gh_mirrors/th/thebookofshaders
点击查看免费下载

导读

本文源自《The Book of Shaders》附录第 01 节(appendix/01/README-ua.md,英文原版见 appendix/01/README.md),完整讲解如何在树莓派(Raspberry Pi)上搭建运行本书全部 GLSL 片元着色器示例的环境。核心方案是作者自制的命令行 GLSL 工具glslViewer:它不仅能在无浏览器、无图形桌面的情况下直接驱动树莓派的 Broadcom GPU 渲染着色器,还具备“保存即重新编译渲染”的热更新能力,配合-l参数即可实现终端 + 文本编辑器的实时编码工作流。读完本文,你将掌握树莓派端 glslViewer 的安装配置、示例运行命令、实时编码技巧,以及如何将整本书离线部署到本地服务器进行学习。

为什么是树莓派:低成本 GPU 与课堂场景

几年前,“假设每个人都有一台带 GPU 的电脑”还是一个相当大胆的假设。如今大多数计算机都已配备 GPU,但对于工作坊或课堂这种需要批量提供设备的场景,对每台机器都要求独立显卡依然是过高的门槛。

树莓派基金会的出现改变了这一局面:一台约 35 美元的小型廉价电脑就能走进教室。更重要的是,就本书的需求而言,树莓派搭载了一颗性能尚可的Broadcom GPU,并且这颗 GPU可以直接从控制台(console)访问,无需依赖 X 图形界面。这意味着在一台没有显示器桌面环境的树莓派上,你也可以直接编译和渲染 GLSL 着色器——这正是运行《The Book of Shaders》全部交互示例的理想硬件载体。

依据原文(appendix/01/README-ua.md):树莓派“配备了一个不错的、可以直接从控制台访问的 Broadcom GPU”,这也是本书选择它作为无浏览器运行示例的首选平台的原因。

glslViewer:本书官方的 GLSL 实时编码工具

glslViewer是本书作者 Patricio Gonzalez Vivo 为这本书(以及自己的艺术创作实践)开发的“灵活的 GLSL 实时编码工具”,它能够运行本书中的全部示例。与一次性渲染图片的离线工具不同,glslViewer 的核心特性是:

  • 自动热更新:当用户保存对代码的修改时,程序会自动重新编译着色器并更新渲染结果。也就是说,你可以持续编辑着色器代码,每次保存,shader 就会被重新编译并即时渲染出来。
  • 控制台直通 GPU:它可以直接访问树莓派的 Broadcom GPU,因此不依赖浏览器或桌面环境。
  • 跨平台一致:同一套工具生态(glslViewer 与 glslCanvas、glslEditor、glslGallery)在 Linux、macOS、Windows、树莓派和浏览器上行为一致,无需改动代码(详见第 04 章 对这套工具生态的完整介绍)。

从本书的构建脚本 src/parseBook.py 可以看到,glslViewer 在官方出书流程中正是被用来把书中的每个.frag示例编译成截图的:

glslViewer <shader.frag> <textures...> --headless -e wait,0.5 -E screenshot,<output.png>

这段命令揭示了 glslViewer 的两个实用能力:--headless无头模式(无需显示设备)与-E screenshot截图输出。这印证了原文“glslViewer 可以运行本书全部示例”的说法——它既是交互运行工具,也是批量编译工具。

前置准备:Raspbian 与本书本地副本

要在树莓派上运行示例,需要两样东西:

  1. Raspbian 系统:树莓派官方基于 Debian 的 Linux 发行版(原文指向 raspberrypi.org 的下载页,此处不展开)。
  2. 本书仓库的本地副本:参见附录上一节“如何离线使用本书”的做法,将仓库克隆到本地。该节给出了完整的依赖安装与本地服务器启动方案,稍后本文也会给出可直接套用的命令。

克隆到本地后,即可进入仓库目录用glslviewer命令逐个运行示例。

在树莓派上安装并配置环境

在安装好 Raspbian 并登录系统之后,按顺序执行以下命令即可完成全部安装与配置(原文命令,完整保留):

sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core glslviewer cd ~ git clone https://gitcode.com/gh_mirrors/th/thebookofshaders.git cd thebookofshaders

对每一步的说明:

命令作用
sudo apt-get update刷新软件源索引,确保能拉到最新可用包
sudo apt-get upgrade升级系统现有软件包,避免依赖冲突
sudo apt-get install git-core glslviewer安装 Git 客户端与 glslViewer(Raspbian 软件源中可直接获取,无需手动编译)
cd ~回到用户主目录,作为克隆目标位置
git clone ...拉取本书仓库的本地副本(原书文档使用 GitHub 上的同名仓库,此处以当前镜像仓库地址为例)
cd thebookofshaders进入仓库根目录,后续所有示例文件均相对该目录运行

安装完成后,即可直接运行示例。例如运行任意章节的.frag文件:

glslviewer 02/hello_world.frag

仓库中每个章节目录都带有一个或多个.frag示例(如 02/hello_world.frag、07/shapes.frag、10/2d-random.frag),它们正是 glslViewer 的输入。

实时编码:用-l参数把示例钉在屏幕角落

glslViewer 的进阶用法是配合文本编辑器进行“边写边看”的实时编码。通过附加-l标志,你可以在屏幕角落渲染当前示例,同时用任意文本编辑器修改代码:

glslviewer -l 03/space.frag

此时任意文本编辑器(原文列举了nano、pico、vi、vim、emacs)保存文件后,角落里的渲染结果会立即更新——glslViewer 监听文件变化并自动重新编译。

这一工作流有两个重要特性:

  • 无需图形桌面:渲染直接发生在控制台直连的 GPU 上,适合无 X 环境的树莓派。
  • 支持远程会话:即使用户通过ssh/sftp连接树莓派,该模式同样有效——你可以在本地电脑上用编辑器修改文件(通过 sftp 同步),而树莓派上的 glslViewer 会自动跟随更新,实现远程实时预览。

深入 glslViewer:命令行参数与批量截图

结合第 04 章 与 src/parseBook.py 中的实际调用,glslViewer 还支持以下与树莓派场景高度相关的参数:

# 指定画布尺寸、加载输入纹理并输出截图 glslViewer yourShader.frag yourInputImage.png -w 500 -h 500 -E screenshot,yourOutputImage.png # 无头模式 + 等待 0.5 秒后截图(本书官方出书流程的用法) glslViewer shader.frag texture.png --headless -e wait,0.5 -E screenshot,out.png

要点说明:

  • -w/-h:设置渲染画布的宽高;
  • -E screenshot,<file>:把当前帧保存为 PNG 截图,适合在树莓派上批量把整本书的示例编译成图片(本书附录第 02 节“如何打印这本书”正是基于这一能力,配合 Pandoc 与 XeLaTeX 生成 PDF,可参考 Makefile 中的make pdf/make epub目标);
  • --headless:无需显示设备即可运行,配合-e wait,0.5可控制渲染等待时间,是自动化脚本与 unix 管道的好帮手。

凭借这些能力,glslViewer 可以被编入 bash 脚本或 unix 管道,用法类似 ImageMagick——这也是第 04 章 将 glslViewer 定位为“控制台 shader 工具”的原因。

无浏览器运行:与本书工具生态的衔接

glslViewer 只是本书工具生态中的一环。第 04 章 完整介绍了这套跨平台工具链:

工具定位树莓派场景下的意义
glslViewer控制台渲染/编译无浏览器、无桌面的树莓派上运行全部示例;也可批量截图出书
glslCanvas浏览器 canvas 渲染在 WebGL 浏览器中内嵌示例(<canvas class="glslCanvas">sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core glslviewer php
  1. 克隆仓库并初始化子模块,启动 PHP 内置服务器:
cd ~ git clone --recursive https://gitcode.com/gh_mirrors/th/thebookofshaders.git cd thebookofshaders git submodule foreach git submodule init && git submodule update php -S localhost:8000
  1. 在浏览器中打开http://localhost:8000/即可阅读整本书。

如果不想安装 PHP,仓库还提供了纯 Python 的替代方案 server.py:它实现了章节 README 的 Markdown 解析、多语言(?lan=tr等参数)切换以及 PHP 模板的静态化处理,可直接运行:

python3 server.py

该脚本默认监听 8000 端口(见 server.py),并在 server.py 中完成章节页的组装。你可以把“glslViewer 跑示例 + 本地服务器看书”组合起来,获得一套完整的离线学习环境。

小结

在树莓派上运行《The Book of Shaders》示例的完整链路是:Raspbian 系统 →apt安装 glslViewer → 克隆本书仓库 →glslviewer运行示例 →-l参数开启实时编码。整个过程无需浏览器和图形桌面,依靠树莓派 Broadcom GPU 的控制台直连能力即可完成全部交互式着色器示例;配合--headless -e wait,0.5 -E screenshot还能批量编译示例用于打印 PDF(见 appendix/02/README.md)。这套环境既适合个人学习,也适合工作坊、课堂等需要低成本批量部署设备的场景。

【免费下载链接】thebookofshaders

Step-by-step guide through the abstract and complex universe of Fragment Shaders.

项目地址:https://gitcode.com/gh_mirrors/th/thebookofshaders
点击查看免费下载
上一篇:《机器学习训练秘籍》第 41 章精读:如何用误差分解表辨别偏差、方差与数据不匹配
下一篇:如何在Blender中轻松导入导出3MF文件:3D打印工作流完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询