区块链技术博客
www.b2bchain.cn

第二章(2):Shader 中 MVP 变换的几何含义求职学习资料

本文介绍了第二章(2):Shader 中 MVP 变换的几何含义求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

Shader 中几何与数学逻辑

前面讲 SceneKit 时,我们说过它替我们完成了渲染的三大步骤:

  • mvp 坐标变换
  • 阴影和遮挡关系处理
  • 计算最终显示颜色

这些操作,使模型能正确显示在手机屏幕上,可以被灯光照亮,互相之间遮挡。如下图所示:
第二章(2):Shader 中 MVP 变换的几何含义
那么当我们自己写 Shader 时,就需要自己处理这些逻辑。对于初学者来说,我们可以把问题简化,只有第一步和第三步是我们必须完成的,而最复杂的第二步:阴影和遮挡关系处理,则可以简单认为,还是由 SceneKit 自动完成。如下图所示,我们通过 Shader 改变了飞机模型的表面颜色,但阴影和遮挡关系不变。

实际上,SceneKit 中阴影和遮挡关系是由一个全局的特殊流程来处理的。对于入门用户来说,我们编写的 Shader 代码,是作用于某个物体的,即只影响某个 SCNode,并不影响全局的阴影和遮挡关系计算。因此,只会改变某个 Node 本身的形状或颜色。

第二章(2):Shader 中 MVP 变换的几何含义

MVP 变换

那么 Shader 中第一步 MVP 变换是怎么样的呢?很简单,在顶点着色器 vertex shader 处理就可以了。在 SceneKit 中我们可以直接取到这个矩阵scn_node.modelViewProjectionTransform,然后进行乘法运算,代码如下:

// 将模型空间的顶点补全为 float4 类型,进行 MVP 变换 out.position = scn_node.modelViewProjectionTransform * float4(in.position, 1.0);

第二章(2):Shader 中 MVP 变换的几何含义
这个modelViewProjectionTransform就是我们要的 MVP 矩阵,它的几何含义就是,将一个模型中的点,变换到屏幕上。按照矩阵乘法的定义,MVP 实际顺序是:P * V * M * position,即对 position,先进行 M 变换,接着 V 变换,最后 P 变换。

Shader 中几何与数学逻辑

前面讲 SceneKit 时,我们说过它替我们完成了渲染的三大步骤:

  • mvp 坐标变换
  • 阴影和遮挡关系处理
  • 计算最终显示颜色

这些操作,使模型能正确显示在手机屏幕上,可以被灯光照亮,互相之间遮挡。如下图所示:
第二章(2):Shader 中 MVP 变换的几何含义
那么当我们自己写 Shader 时,就需要自己处理这些逻辑。对于初学者来说,我们可以把问题简化,只有第一步和第三步是我们必须完成的,而最复杂的第二步:阴影和遮挡关系处理,则可以简单认为,还是由 SceneKit 自动完成。如下图所示,我们通过 Shader 改变了飞机模型的表面颜色,但阴影和遮挡关系不变。

实际上,SceneKit 中阴影和遮挡关系是由一个全局的特殊流程来处理的。对于入门用户来说,我们编写的 Shader 代码,是作用于某个物体的,即只影响某个 SCNode,并不影响全局的阴影和遮挡关系计算。因此,只会改变某个 Node 本身的形状或颜色。

第二章(2):Shader 中 MVP 变换的几何含义

MVP 变换

那么 Shader 中第一步 MVP 变换是怎么样的呢?很简单,在顶点着色器 vertex shader 处理就可以了。在 SceneKit 中我们可以直接取到这个矩阵scn_node.modelViewProjectionTransform,然后进行乘法运算,代码如下:

// 将模型空间的顶点补全为 float4 类型,进行 MVP 变换 out.position = scn_node.modelViewProjectionTransform * float4(in.position, 1.0);

第二章(2):Shader 中 MVP 变换的几何含义
这个modelViewProjectionTransform就是我们要的 MVP 矩阵,它的几何含义就是,将一个模型中的点,变换到屏幕上。按照矩阵乘法的定义,MVP 实际顺序是:P * V * M * position,即对 position,先进行 M 变换,接着 V 变换,最后 P 变换。

Shader 中几何与数学逻辑

前面讲 SceneKit 时,我们说过它替我们完成了渲染的三大步骤:

  • mvp 坐标变换
  • 阴影和遮挡关系处理
  • 计算最终显示颜色

这些操作,使模型能正确显示在手机屏幕上,可以被灯光照亮,互相之间遮挡。如下图所示:
第二章(2):Shader 中 MVP 变换的几何含义
那么当我们自己写 Shader 时,就需要自己处理这些逻辑。对于初学者来说,我们可以把问题简化,只有第一步和第三步是我们必须完成的,而最复杂的第二步:阴影和遮挡关系处理,则可以简单认为,还是由 SceneKit 自动完成。如下图所示,我们通过 Shader 改变了飞机模型的表面颜色,但阴影和遮挡关系不变。

实际上,SceneKit 中阴影和遮挡关系是由一个全局的特殊流程来处理的。对于入门用户来说,我们编写的 Shader 代码,是作用于某个物体的,即只影响某个 SCNode,并不影响全局的阴影和遮挡关系计算。因此,只会改变某个 Node 本身的形状或颜色。

第二章(2):Shader 中 MVP 变换的几何含义

MVP 变换

那么 Shader 中第一步 MVP 变换是怎么样的呢?很简单,在顶点着色器 vertex shader 处理就可以了。在 SceneKit 中我们可以直接取到这个矩阵scn_node.modelViewProjectionTransform,然后进行乘法运算,代码如下:

// 将模型空间的顶点补全为 float4 类型,进行 MVP 变换 out.position = scn_node.modelViewProjectionTransform * float4(in.position, 1.0);

第二章(2):Shader 中 MVP 变换的几何含义
这个modelViewProjectionTransform就是我们要的 MVP 矩阵,它的几何含义就是,将一个模型中的点,变换到屏幕上。按照矩阵乘法的定义,MVP 实际顺序是:P * V * M * position,即对 position,先进行 M 变换,接着 V 变换,最后 P 变换。

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 第二章(2):Shader 中 MVP 变换的几何含义求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们