资讯动态

《The Book of Shaders》多语言协作指南:翻译、词汇表与着色器示例贡献实战

发布时间:2026/10/16 1:41:59 来源:尧图企业网站定制
【免费下载链接】thebookofshadersStep-by-step guide through the abstract and complex universe of Fragment Shaders.项目地址https://gitcode.com/gh_mirrors/th/thebookofshaders点击查看免费下载本文聚焦开源书籍《The Book of Shaders》面向社区的多语言协作流程系统讲解如何参与内容翻译、完善 GLSL 词汇表、修正错误以及通过在线编辑器分享着色器示例。读完本文你将掌握该仓库的文档组织约定README-xx.md语言后缀命名、嵌入式示例codeAndCanvas/simpleFunction的保留规则以及用本地 PHP 服务器配合?lan参数验证翻译结果的完整测试方法。概述参与这本书的四种方式《The Book of Shaders》是一本逐步讲解 Fragment Shader片元着色器的入门书籍仓库内所有章节正文都以 Markdown 编写。与其阅读者身份不同协作贡献者可以以四种方式参与见 appendix/03/README.md翻译内容Translating content将正文章节翻译成新语言例如已有中文README-ch.md、日文README-jp.md、乌克兰文README-ua.md等改进词汇表Improving the glossary完善 glossary 目录下按主题与字母表组织的 GLSL 术语索引编辑内容Editing content发现拼写、排版或技术错误时提交修正分享着色器示例Sharing shaders examples通过在线编辑器编写并导出得意之作经维护者审核后收录进示例画廊。翻译内容完整操作流程1. 理解仓库的文档组织与语言命名约定翻译的第一步是熟悉仓库的文件布局。全书正文存放在以章节编号命名的目录00/、01/、02/…18/中每个章节目录都包含README.md章节正文默认英文版README-语言代码.md各语言翻译版例如README-jp.md日文、README-es.md西班牙文、README-ua.md乌克兰文大写字母命名的辅助文件TITLE.md章节标题、SUMMARY.md章节摘要等同样遵循TITLE-xx.md的语言后缀规则index.php章节页面的服务端入口。以仓库实际存在的附录三为例appendix/03 目录同时包含README.md、README-ch.md、README-de.md、README-ua.md、README-vi.md等十余个语言版本这正是同一文件多语言并存命名约定的直观体现。页面顶部的语言切换条languages.php也按同一约定列出所有可用语言?lanua、?lanch、?lanfr、?lanru等。注意文件名的两个后缀字母代表目标语言新增翻译时务必为每个待翻译文件都追加对应的语言代码不能只翻译正文文件。2. 派生仓库并克隆到本地在代码托管平台GitHub上找到patriciogonzalezvivo/thebookofshaders仓库后先Fork派生一份到自己名下再将其克隆到本地计算机。克隆命令为git clone 你的 fork 地址本地克隆后即可直接编辑 Markdown 文件——这正是原文档强调的本书以 Markdown 编写因此非常易于编辑的初衷。3. 复制待翻译文件并追加语言代码对需要翻译的每个文件复制一份并追加两个字母的语言代码作为文件名后缀。例如翻译第03章为乌克兰文时应基于appendix/03/README.md创建appendix/03/README-ua.md。4. 逐行翻译见翻译须知对照原文逐行翻译即可详见下文翻译须知中关于嵌入式示例的硬性约束。5. 本地测试见测试章节在浏览器中访问本地服务并携带语言参数验证页面渲染效果详见下文用本地 PHP 服务器验证翻译。6. 推送并提交 Pull Request将改动 push 到自己的 fork 分支然后向主仓库发起 Pull RequestPR。提交前建议自查文件名后缀正确、嵌入式示例未被破坏、?lan测试通过。翻译须知绝对不可改动嵌入式示例章节正文中大量内嵌了可交互的着色器示例与函数图这些内容由 HTML 标签驱动翻译时严禁删除或修改。典型的两种形式如下div classcodeAndCanvas datagrid-making.frag/divdiv classsimpleFunction datay mod(x,2.0);/div为什么这些标签如此关键从仓库源码可以找到完整证据链src/main.js 中的loadGlslElements()函数会在页面加载时遍历.codeAndCanvas与.simpleFunction两类元素对前者用GlslEditor创建可编辑着色器编辑器data属性值如grid-making.frag即待加载的着色器文件路径并开启exportIcon导出按钮对后者则把data中的函数表达式注入preFunction/postFunction包裹的模板渲染成一张函数曲线图如y mod(x,2.0);的取模曲线header.php 会按需加载src/glslCanvas、src/glslEditor、src/glslGallery三个子模块的构建产物若本地缺失则回退到线上 CDN为上述交互组件提供运行时支持章节正文本身例如 09/README.md就以这类标签组织教学示例div classcodeAndCanvas datagrid-making.frag/div、div classsimpleFunction datay mod(x,2.0);/div等。因此翻译时若误删或改写这些标签轻则示例无法加载重则破坏整章的交互教学体验。正确做法是仅翻译标签外部的自然语言文本标签内部属性原样保留。用本地 PHP 服务器验证翻译?lan参数原文档给出的测试方案非常轻量——整个网站本身就是一组 PHP 页面无需数据库或构建步骤在仓库根目录启动内置服务器即可php -S localhost:8000然后在浏览器访问http://localhost:8000进入正在翻译的章节目录并在地址末尾追加?lan与两个字母的语言代码。举例若你将第03章翻译为法语对应文件appendix/03/README-fr.md验证地址为http://localhost:8000/03/?lanfr这一机制的底层实现位于章节入口 appendix/03/index.php页面读取$_GET[lan]参数若同目录下存在README-lan.md文件则将其作为渲染源否则回退到默认的README.md随后通过src/parsedown/Parsedown.php将 Markdown 渲染为 HTML 输出。仓库根目录的 index.php 采用完全相同的语言解析逻辑。这也解释了为什么必须严格遵守README-代码.md的命名约定——文件名即路由。另外值得注意的是?lanfa波斯语时 header.php 还会为html注入dirrtl属性使页面变为从右向左排版说明该网站对 RTL 语言也有完整的适配支持。改进词汇表glossaryglossary 词汇表目前仍在开发完善中欢迎社区贡献改进建议。该目录的组织方式非常清晰顶层README.md及多语言版本如README-ua.md承担索引作用将 GLSL 条目按主题与字母表双重维度归类按主题TYPESbool、float、vec2、vec3、mat2、sampler2D等、QUALIFIERSattribute、uniform、varying、precision、highp/mediump/lowp等、BUILT-IN VARIABLESgl_FragCoord、gl_FragColor、gl_Position等、BUILT-IN CONSTANTSgl_MaxFragmentUniformVectors等以及三角函数、指数函数、通用函数、几何函数、矩阵函数、向量关系函数、纹理查找函数等函数族按字母表从abs()、acos()到vec4、void的完整索引每个条目对应一个独立子目录如 glossary/abs、glossary/sin 等便于按条目补充定义、用法示例与跨语言翻译。对词汇表的贡献可以包括修正已有条目的错误、为缺失的 GLSL 内置函数补全新条目、完善多语言翻译等。编辑内容纠错与修订我们都是人都会犯错。若在阅读或翻译过程中发现内容错误原文档建议三条路径直接提出反馈say something修复后提交 Pull Request或开启一个 issue 记录问题。对于翻译类错误请务必同步修正对应的README-代码.md文件保持各语言版本一致。分享你的着色器示例书中大量页面嵌入了在线编辑器的链接与实例。当你编写出满意的着色器后可以通过导出按钮⇪图标获得代码的分享链接将链接发送给维护者经审核后收录进示例画廊examples/README.md 中维护者说明这是从本书各章节提取的示例集合加上其他读者通过在线编辑器慷慨捐赠的着色器。仓库内同样提供了独立的本地编辑器页面 edit.php它加载src/glslEditor的构建产物以 Monokai 主题初始化GlslEditor支持画布拖动、多缓冲、文件拖放与哈希同步watchHash你可以直接基于它体验与在线编辑器一致的编辑环境。延伸从协作文档到成书构建作为翻译协作的延伸理解仓库的成书流程有助于你判断改动是否会破坏最终出版物。根目录 Makefile 定义了构建入口all: python3 src/parseBook.py -f tex -f pdf -f epubsrc/parseBook.py 会扫描每个含README.md的章节目录将codeAndCanvas标签替换为对应的 GLSL 代码块必要时调用glslViewer以无头模式生成示例截图见injectShaderBlocks()随后调用 pandoc 统一生成tex/pdf/epub产物。这意味着翻译时保留嵌入式标签不仅保证网页端交互正常也直接决定最终电子书示例代码与配图能否正确生成——这也是翻译须知强调勿动示例的根本原因。小结《The Book of Shaders》的多语言协作体系高度依赖一套自洽的约定README-代码.md的语言后缀命名、?lan参数驱动的 PHP 渲染路由、codeAndCanvas/simpleFunction承载的交互示例以及glossary目录的主题化术语索引。只要遵循保留嵌入式标签、严格命名文件、用本地服务器验证这三条核心准则任何人都可以顺畅地完成一次完整的翻译贡献或为词汇表与示例画廊添砖加瓦。赞分享【免费下载链接】thebookofshadersStep-by-step guide through the abstract and complex universe of Fragment Shaders.项目地址https://gitcode.com/gh_mirrors/th/thebookofshaders点击查看免费下载相关推荐为《The Book of Shaders》开源项目做贡献翻译、词汇表、编辑与着色器示例分享全指南为《The Book of Shaders》开源项目做贡献翻译、词汇表、编辑与着色器示例分享全指南 《The Book of Shaders》是一本以 Mar树莓派上运行 GLSL 着色器《The Book of Shaders》示例实战指南glslViewer 篇树莓派上运行 GLSL 着色器《The Book of Shaders》示例实战指南glslViewer 篇 导读 本文围绕《The Book of SSwiftPM 插件 API 中的 SystemLibraryTarget在构建插件中检视宿主系统库目标SwiftPM 插件 API 中的 SystemLibraryTarget在构建插件中检视宿主系统库目标 导读 本文围绕 Swift Package Mana上一篇如何用Sunshine打造你的个人云游戏服务器5步实现跨平台游戏串流下一篇Sunshine 游戏串流免费完整指南20 分钟从装包到画面铺屏创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑