Interactive Input Methods and Graphical User Interfaces × Programmable Shaders

Interactive Input Methods and Graphical User Interfaces × Programmable Shaders:把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色,以公式、章专属交互和可重放故障证据独立重写。

学习目标

  • 能说明Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中的“把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色”,并指出公式中每个量的空间、单位或概率含义
  • 能比较正常基线与“用设备坐标直接命中世界对象,或焦点转移后仍消费旧事件;顶点和片元阶段接口位置不一致,或在错误坐标空间计算法线”反例,定位事件时间、设备坐标、逆变换、命中对象和焦点状态、着色器日志、接口布局、uniform绑定和参考像素中的首个差异
  • 能操作三个章专属实验,让interactive input、graphical user interface、programmable shader、glsl同时具备解释、视觉和练习证据
  • 能修改最小实现、固定输入重放,并判断“Interactive Input Methods and Graphical User Interfaces的输入、公式中间量、输出与恢复结果可用同一基线复算,且Programmable Shaders的输入、公式中间量、输出与恢复结果可用同一基线复算”是否重新成立

从一个会失败的图像实验开始

Interactive Input Methods and Graphical User Interfaces × Programmable Shaders要回答的不是“这个名词是什么”,而是:在固定输入下,如何验证“把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色”,并让一个反例可重复地推翻错误实现?先写下预期像素、几何或估计量,再运行基线;只要事件时间、设备坐标、逆变换、命中对象和焦点状态、着色器日志、接口布局、uniform绑定和参考像素无法指出差异来自哪一步,图像看起来正确也不能通过。

本页的不变量是:Interactive Input Methods and Graphical User Interfaces的输入、公式中间量、输出与恢复结果可用同一基线复算,且Programmable Shaders的输入、公式中间量、输出与恢复结果可用同一基线复算。反例“用设备坐标直接命中世界对象,或焦点转移后仍消费旧事件;顶点和片元阶段接口位置不一致,或在错误坐标空间计算法线”只改变一个条件,因而正常、故障与恢复三次运行应能用同一输入直接比较。

原版、版次与事实来源

Interactive Input Methods and Graphical User Interfaces × Programmable Shaders只用Pearson第4版书目与22章目录确定原书单元;未取得正文,因此不宣称复现作者表述。以下机制、公式与代码按图形学定义独立编写,OpenGL 4.6 Core规范GLSL 4.60规范只核对现代API事实,不替代原书历史内容。

六个检查词

。这些词共同约束把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色,每个词都必须落到公式、交互状态或可重放输出,不能只出现在术语表。

原书单元与独立机制解释

Interactive Input Methods and Graphical User Interfaces

interactive input 把指针、键盘或触控事件映射到对象选择与操作,graphical user interface 再通过控件状态给出反馈。命中测试必须说明坐标空间、焦点和事件捕获规则。

本单元的正式坐标是interactive input、graphical user interface。验证Interactive Input Methods and Graphical User Interfaces时,先制造“用设备坐标直接命中世界对象,或焦点转移后仍消费旧事件”,再检查事件时间、设备坐标、逆变换、命中对象和焦点状态能否把错误定位到把设备事件转换成稳定的图形交互状态的首个分叉。

plocal=Mworld1pdevicep_{local}=M_{world}^{-1}p_{device}

Programmable Shaders

programmable shader 让应用提供管线阶段代码,glsl 明确输入输出、存储类别和执行模型。阶段接口、坐标空间和资源绑定必须一致,编译成功不代表结果正确。

本单元的正式坐标是programmable shader、glsl。验证Programmable Shaders时,先制造“顶点和片元阶段接口位置不一致,或在错误坐标空间计算法线”,再检查着色器日志、接口布局、uniform绑定和参考像素能否把错误定位到用可编程阶段定义顶点与片元的变换和着色的首个分叉。

gl_Position=PVMp,qquadCo=f(material,lights,varyings)gl\_Position=PVM\,p,qquad C_o=f(material,lights,varyings)

先预测,再操作三个章专属实验

分步1 / 3

1. 概念与因果路径

在Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中选择任一正式坐标,沿机制链查看它的输入、状态变化和可推翻探针。

图形管线坐标审计

Interactive Input Methods and Graphical User Interfaces × Programmable Shaders

把把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色放进输入、变换、离散、外观与显示五个责任阶段。

正式概念

Interactive Input Methods and Graphical User Interfaces / interactive input

interactive input 把指针、键盘或触控事件映射到对象选择与操作,graphical user interface 再通过控件状态给出反馈。命中测试必须说明坐标空间、焦点和事件捕获规则。

模型/输入

定义图元、属性、数据或交互事件

探针:事件时间、设备坐标、逆变换、命中对象和焦点状态

当前公式坐标

p_{local}=M_{world}^{-1}p_{device} ; gl\_Position=PVM\,p,qquad C_o=f(material,lights,varyings)
原书边界:Donald Hearn、M. Pauline Baker、Warren Carithers《Computer Graphics with OpenGL》第4版。课程实验显式标注坐标和状态,不把现代API示例冒充原书正文。

最小可重现实验

Point local = inverse(node.worldTransform) * pointer.devicePosition;
if (node.bounds.contains(local)) {
  focus.capture(node.id);
  dispatch(node.id, pointer);
}

运行Interactive Input Methods and Graphical User Interfaces × Programmable Shaders时固定随机种子、输入几何、坐标约定和数值精度;记录编译命令或算法版本、输出摘要与失败条件。实验输出若依赖隐藏全局状态,必须先消除该依赖再比较。

练习与答案

练习

问题 1:公式与边界。 怎样用一个数值样本证明 plocal=Mworld1pdevicep_{local}=M_{world}^{-1}p_{device} 中的量没有混用空间、单位或概率密度?

问题 2:正式坐标。 interactive input、graphical user interface、programmable shader、glsl如何进入可操作验证?

问题 3:故障恢复。 如何证明“用设备坐标直接命中世界对象,或焦点转移后仍消费旧事件;顶点和片元阶段接口位置不一致,或在错误坐标空间计算法线”已经真正修复?

本章回顾

掌握Interactive Input Methods and Graphical User Interfaces × Programmable Shaders意味着能将“把设备事件转换成稳定的图形交互状态,并用可编程阶段定义顶点与片元的变换和着色”写成明确公式或算法,能操作正式坐标,能制造“用设备坐标直接命中世界对象,或焦点转移后仍消费旧事件;顶点和片元阶段接口位置不一致,或在错误坐标空间计算法线”,还能凭事件时间、设备坐标、逆变换、命中对象和焦点状态、着色器日志、接口布局、uniform绑定和参考像素恢复同输入结果,而不是把一段Vulkan生命周期模板换上本章标题。

名词解释

本章出现的专业名词,用大白话再讲一遍。

interactive input

interactive input在Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中用于把设备事件转换成稳定的图形交互状态;应由事件时间、设备坐标、逆变换、命中对象和焦点状态确认,而不是只凭术语出现。

graphical user interface

graphical user interface在Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中用于把设备事件转换成稳定的图形交互状态;应由事件时间、设备坐标、逆变换、命中对象和焦点状态确认,而不是只凭术语出现。

programmable shader

programmable shader在Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中用于用可编程阶段定义顶点与片元的变换和着色;应由着色器日志、接口布局、uniform绑定和参考像素确认,而不是只凭术语出现。

glsl

glsl在Interactive Input Methods and Graphical User Interfaces × Programmable Shaders中用于用可编程阶段定义顶点与片元的变换和着色;应由着色器日志、接口布局、uniform绑定和参考像素确认,而不是只凭术语出现。

coordinate space

coordinate space:坐标空间声明数值当前属于模型、世界、观察、裁剪或设备阶段。

raster state

raster state:光栅状态决定覆盖、深度、混合和面剔除等离散规则。

阅读导航

← Computer Animation × Algorithmic Modeling · Three-Dimensional Object Representations × Spline Representations × Visualization of Data Sets →

讨论

评论区加载中…