Opengl_07_插值

1,
光栅器对从顶点着色器传来的变量插值。

为了在屏幕上真正显示,必须将顶点着色器vs的输出变量设置为‘gl_Position‘,gl_Position是一个保存着顶点齐次坐标的4维向量。XYZ分量被W分量所分割(称作视角分割,这个是教程的重点话题)并且XYZ分量上超出单位化盒子([-1,1])的部分会被裁剪掉。最终的结果会被转换到屏幕坐标系然后三角形(或者其他支持的图元类型)被光栅器渲染到屏幕上。

光栅器在三角形的三个顶点之间进行插值(或者通过另外一种技术一行一行的插值)并执行片断着色器遍历三角形的每一个像素。
片断着色器会返回光栅器存在颜色缓存中用于显示的像素颜色值。

从顶点着色器传来的其他的变量不会经过上面的步骤。如果片断着色器没有显式地请求那个变量那么一般的驱动优化会丢弃顶点着色器vs中只是影响该变量的操作。但如果片断着色器fs确实使用到了那个变量,光栅器会在光栅化阶段对其进行插值,并且每一次片断着色器fs的调用都会提供一个匹配特定位置的插值后的值,这意味着相邻的两个像素的值都略有不同。

在各渲染管线之间进行传递的参数必须在shader中使用‘out‘保留字来全局的进行声明定义。

2,
三角形的法向量和纹理坐标是很常见的两种依赖插值变量
顶点的法向量通常是包含这个顶点的所有三角形法向量的平均值。如果物体不是平坦的话那么每个三角形的三个顶点的法向量会各不相同,那样我们可以通过插值来计算每个像素的法向量,那些向量会用于光线的计算,从而产生更逼真可信的光照效果。
对于纹理坐标的应用也类似,这些插值结果作为模型的一部分定义在每个顶点上。为了用贴图覆盖三角形你需要对每个像素进行一样的插值操作并给每个像素制定正确的纹理坐标,
这些坐标都是插值的结果。
Two very common variables that often rely on this interpolation are the triangle normal and texture coordinates. The vertex normal is usually calculated as the average between the triangle normals of all triangles that include that vertex. If that object is not completely flat this usually means that the three vertex normals of each triangle will be different from each other. In that case we rely on interpolation to calculate the specific normal at each pixel. That normal is used in lighting calculations in order to generate a more believable representation of lighting effects. The case for texture coordinates is similar. These coordinates are part of the model and are specified per vertex. In order to "cover" the triangle with a texture you need to perform the sample operation for each pixel and specify the correct texture coordinates for that pixel. These coordinates are the result of the interpolation.

时间: 2024-11-07 00:02:02

Opengl_07_插值的相关文章

插值与拟合

1.插值 -->求过已知有限个数据点的近似函数 1)拉格朗日多项式插值 -->n个插值点不同时确定了一个唯一的n次多项式 构造n次拉格朗日插值多项式(不使用解方程n个约束来求解待定系数) 2)牛顿插值 使用差商概念来构造牛顿插值公式(计算量小,余项与拉格朗日余项相等),当节点之差为常数时,使用差分来代替差商构造牛顿向前插值公式 3)分段线性插值 -->高次插值存在震荡缺陷,采用低次分段函数(线性函数) y=interp1(x0,y0,x,'method') -->method可取n

快节奏多人在线游戏网络入门系列教程(3):实体插值

简介 在第一篇文章中,我们介绍了权威服务器的概念和其防作弊的能力.然而,该框架简单的实现会导致一系列糟糕的响应性和可玩性.在第二篇文章中,我们介绍了客户端预测与服务器协调技术来克服这些缺点. 这两篇文章使用的技术使得单一玩家在在网络游戏上能够获取和单机游戏一样的游戏体验,即使在因特网具有一定延迟的情况下. 本文,我们将讨论多个玩家连接同一个权威服务器的情况. 服务器时间步长 上一篇文章中服务器的行为非常简单--读取客户端输入,更新游戏状态,返回给客户端.然而当有多个客户端存在的情况下,服务器的主

angularJS——ng-bind指令与插值的区别

在AngularJS中显示模型中的数据有两种方式: 一种是使用花括号插值的方式: 1 <p>{{text}}</p> 另一种是使用基于属性的指令,叫做ng-bind: 1 <p ng-bind="text"></p> 这两种方式的效果都是一样的,其主要区别在于,使用花括号语法时,在AngularJS使用数据替换模板中的花括号时,第一个加载的页面,通常是应用中的index.html,其未被渲染的模板可能会被用户看到.而使用第二种方法的视图不

ArcGIS DEM数据、创建随机点、创建随机点工具\IDW插值

利用DEM范围创建随机点.值提取至点工具得到含有高程值的点图层,再利用IDW插值得到高程栅格数据. 点击学习视频内容

克里金插值程序

克里金插值的原理的阅读笔记,在下面下载DOWN LINK.此原理让你很快明天克里金插值的原理,论文写的十分的好.推荐你下载并阅读,如果没有CSDN积分,可以去知网或者百度学术中下载.只是上面没有我的笔记而已. 下面说说程序的事情. 这个程序有两个版本,第一个是Matlab版本的,在CSDN中可以下载,地址为 Download_LINK. 这个matlab版本的缺点是运行慢,太大的数据会慢的受不了.所以,我在网上找了一段时间,花费一天时间.终于找到一个c++版本的,这个版本的大家想必也知道.只是不

数据结构之--插值查找

数据结构之--插值查找 定义:插值查找就是把要查找的关键字key与查找表中最大和最小记录的关键字比较后的查找方法,其核心就在于插值的计算公式(key-a[low])/(a[high]-a[low]) 图解: 时间复杂度:只是把折半的算法由mid=(low+high)/2变为了(mid=low+(high-low)*(key-a[low])/(a[high]-a[low])),所以时间复杂度还是为与普通折半查找一样为:O(logn). #include<stdio.h> int Binary_S

插值技术之Bezier插值(1) -- Bezier Curve

作者:i_dovelemon 来源:CSDN 日期:2015 / 7 / 11 主题:Interpolate,Bezier Curve 引言 在游戏开发中,诸如动画系统,路径计算等等操作,都会遇到对数值进行插值的问题.从今天开始,将会陆陆续续的向大家介绍什么是插值技术?以及在计算机视频游戏开发中经常使用的插值技术有哪些. 插值技术(Interpolate Technology),是通过数学计算的方式,将两个值之间的部分进行平滑过渡的一种技术方案.这样的技术可以在诸如动画系统等游戏内容中得到使用.

透视纹理引发的对于插值的思考

插值还没有系统的学过,最近在实现BlackWalnut3D的纹理映射时,才慢慢发现3D中的插值和我们数学上的插值还是有点不同的. 个人认为,插值可以和向量,矩阵一起称为计算机图形学中最最基本的数学基础. 在构造物体时,可以只设置几个参考点,使用插值完成贝塞尔曲线的逼近.在进行裁剪时,为了获得规范的,可以方便进行裁剪的裁剪立方体CVV,将透视和插值融合实现了透视矩阵,同时,在具体的裁剪过程中,使用插值获得各种裁剪后的坐标.在光栅化的阶段,使用插值完成将一个平面离散到屏幕像素上,并且利用插值完成正确

Vue.js学习笔记: 数据绑定语法---插值

文本:数据绑定最基础的形式就是文本插值,使用一对双大括号 双大括号标签会被相应数据对象的msg属性的值替换,每当这个属性变化时它也会更新 HTML: <span id="test01">Message:{{msg}}</span> JS: var vm = new Vue({     el:'#test01',     data:{         msg:'数据绑定语法--文本插值'     } }); 也可以只处理单次插值,今后的数据变化就不会再引起插值更新