【免费下载链接】thebookofshaders
Step-by-step guide through the abstract and complex universe of Fragment Shaders.
导读
本文源自《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 与本书本地副本
要在树莓派上运行示例,需要两样东西:
- Raspbian 系统:树莓派官方基于 Debian 的 Linux 发行版(原文指向 raspberrypi.org 的下载页,此处不展开)。
- 本书仓库的本地副本:参见附录上一节“如何离线使用本书”的做法,将仓库克隆到本地。该节给出了完整的依赖安装与本地服务器启动方案,稍后本文也会给出可直接套用的命令。
克隆到本地后,即可进入仓库目录用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
如果不想安装 PHP,仓库还提供了纯 Python 的替代方案 server.py:它实现了章节 README 的 Markdown 解析、多语言( 该脚本默认监听 8000 端口(见 server.py),并在 server.py 中完成章节页的组装。你可以把“glslViewer 跑示例 + 本地服务器看书”组合起来,获得一套完整的离线学习环境。 小结在树莓派上运行《The Book of Shaders》示例的完整链路是:Raspbian 系统 → 赞 【免费下载链接】thebookofshadersStep-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),仅供参考 |