着色器和效果——2.2 顶点数据用途

详解three.js的着色器,能够实现哪些效果? / 1. 创建着色器材质vUv = uv;`,`,});// 2. 应用于网格// 1. 创建着色器材质vUv = uv;`,`,});// 2. 应用于网格。 阅读详情

2.2 顶点数据用途

阅读此文表明您已同意文末的声明

考虑这个顶点声明:

D3DVERTEXELEMENT9 decl[] =

{

{0,  0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_

  POSITION, 0},

{0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_

  NORMAL,   0},

{0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_

  NORMAL ,   1},

{0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_

  NORMAL,   2},

D3DDECL_END()

};

我们需要一种方式来定义一个顶点声明的元素到顶点着色器输入结构的数据成员的映射。我们在输入结构中通过指定每个数据成员的语义(: usage-type [usage-index])定义这个映射。语义通过元素的用途类型和用途索引标识顶点声明中的一个元素。由数据成员的语义标识的顶点元素是是得以映射到数据成员的元素。例如,对应于前面的顶点声明的输入结构是:

struct VS_INPUT

{

     vector position    : POSITION;

     vector normal      : NORMAL0;

     vector faceNormal1 : NORMAL1;

     vector faceNormal2 : NORMAL2;

};

注意:如果我们遗漏了用途索引,就意味着用途索引为零。例如,POSITION和POSITION0是同一样东西。

这里decl中的元素0,由用途POSITION和用途索引0标识,它映射到position。decl中的元素1,由用途NORMAL和用途索引0标识,它映射到normal。decl中的元素2,由NORMAL和用途索引1标识,它映射到faceNormal1。decl中的元素3,由用途NORMAL和用途索引2标识,它映射到faceNormal2。

受支持的顶点着色器输入用途(input usage)是:

n          POSITION [n]——位置

n          BLENDWEIGHTS [n]——混合权重

n          BLENDINDICES [n]——混合索引

n          NORMAL [n]——法线向量

n          PSIZE[n]——顶点大小

n          DIFFUSE [n]——散射颜色

n          SPECULAR [n]——镜面颜色

n          TEXCOORD [n]——纹理坐标

其中,n是一个位于区间[0, 15]的可选整数。

注意:再重复一遍,这些用途类型中的少数未在本书中提及,如:BLENDWEIGHTS, TANGENT, BINORMAL, BLENDINDICES, 和TESSFACTOR。

此外,对于输出结构,我们必须指定每个成员是用来做什么的。例如,数据成员应该被作为位置向量、颜色、纹理坐标等对待吗?图形卡没主意,除非你强制的告诉它。这也需要通过语法的语义来完成:

struct VS_OUTPUT

{

     vector position  : POSITION;

     vector diffuse   : COLOR0;

     vector specular  : COLOR1;

};

受支持的顶点着色器输出用途是:

n          POSITION—位置

n          PSIZE—顶点大小

n          FOG—雾混合值

n          COLOR [n]—顶点颜色。注意:可以有多个顶点颜色被输出,并且这些颜色可以被混合在一起以产生最终的颜色。

n          TEXCOORD [n]—顶点纹理坐标。注意:多个顶点纹理坐标可以被输出。

其中,n是一个位于区间[0, 15]的可选整数。

[声明]:本文译自Frank Luna的《Introduction to 3D Game Programming with DirectX 9.0》,限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;本文仅用于学习交流与参考用途,不得用于任何形式的商业用途;如需转载需事先征得作者本人和译者的同意,保持文章的完整性,并注明作者、译者和出处,作者保留对译文的所有权利。对于违反以上条款造成的后果,译者对此不负任何责任。我的MSN是Raymond_King123@hotmail.com,欢迎热爱3D图形和游戏,并有一定图形编程经验的朋友与我进行交流。

 

 

OpenGL入门002——顶点着色器和片段着色器 opengl绘制三角形 阅读详情

相关推荐

webGL入门教程_02顶点着色器与片元着色器

webgl着色器详解,顶点着色器(vertex shader) 片元着色器(Fragment shader)

w131552的博客 1632

Unity 顶点着色器保姆级讲解

本文详细介绍了顶点着色器的概念、优缺点以及在 Unity 中实现布林冯光照模型的示例代码。其中,顶点着色器是图形渲染管线中的一部分,用于对每个顶点进行操作和变换。它的优点包括高灵活性、高性能和支持硬件加速,但也存在一些缺点,如难以调试和复杂性较高等。 在 Unity 中,可以通过编写顶点着色器来实现各种复杂的图形效果,包括光照、变形、骨骼动画等。本文以兰伯特光照模型为例,给出了实现该模型的顶点着色器代码,并详细解释了其中的各个部分的含义和作用。

u010082265的博客 3903

Unity3D:内置着色器的用途和性能

在这方面要记住的最重要的一点是,可在多个材质中使用单个着色器,但单个材质不能使用多个着色器。在像素光照着色器上照射的任何顶点光照都将基于对象的顶点或整个对象进行计算,并且不会计入与像素光照关联的渲染成本或视觉效果。前向渲染路径中的__顶点光照__着色器总是比像素光照着色器的成本更低。Unity 中的着色器是通过__材质__来使用的,材质本质上结合了着色器代码与纹理等参数。所以,像素光照着色器会带来性能成本,但这样的成本可产生一些出色的效果:阴影、法线贴图、漂亮的镜面高光和光照剪影,不一而足。

jianshi2023的博客 1152

(三) 计算机图形学 之 Shader 定义 (顶点 着色器)

Tlilnear: 就近 周围 8个像素的平均 (左上+上+右上+右+右下+下+左下+左+中)/9。Bliinear: 就近 周围 4个像素的平均 (上+中+下+左+右)/5。处理也可用 Unity提供的 Filter Mode选项里的解决该问题。(纹理就是贴图图片,显示区域是要放置材质球的物体 例如Culb)显示区域 100*100 纹理大小 100*100。显示区域 100*100 纹理大小 1024*512。= 1/1.0/2: 默认值。决定材质 跟灯光的作用。

GarFe的博客 1490

opengl之高级GLSL(1)-顶点着色器变量与片段着色器变量

官方教程位置 openglCN GLSL的内建变量: 我们已经学会使用顶点属性、uniform和采样器来完成这一任务了。然而,除此之外,GLSL还定义了另外几个以gl_为前缀的变量,它们能提供给我们更多的方式来读取/写入数据。我们已经在前面教程中接触过其中的两个了:顶点着色器的输出向量gl_Position,和片段着色器的gl_FragCoord。 顶点着色器变量 List item我们已经见过gl_Position了,它是顶点着色器的裁剪空间输出位置向量。如果你想在屏幕上显示任何东西,在顶点着色器中

wqdqwass的博客 3232

基于STM32的HC-SR04超声波模块测距(新手级)

本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。

weixin_63758495的博客 2205

GLSL教程 第2章:GLSL基础

在本章中,我们将深入探讨GLSL(OpenGL Shading Language)的基础知识。这些基础知识包括GLSL程序的基本结构、变量声明和数据类型、向量和矩阵操作以及控制流语句。掌握这些基础概念对于编写有效的GLSL着色器至关重要。

qq_54098120的博客 1945

STM32进入HardFault_Handler时,如何找到问题所在?

当STM32进入HardFault_Handler时,定位问题发生的点

m0_60831979的博客 2150

顶点着色器(Vertex Shader):揭秘那个让 3D 世界“动起来“的魔法操控者

要理解顶点着色器,首先要回答两个根本问题——什么是"着色器"?什么是"顶点"?什么是顶点(Vertex)?顶点是 3D 模型的最基本构成单元——字面意思是"角的点"——实际含义是"3D 空间中的一个数据点"。一个 3D 模型本质上是一堆顶点的集合——例子一个最简单的三角形——由 3 个顶点构成——每个顶点至少有一个 (x, y, z) 位置坐标。一个立方体——8 个顶点(8 个角点)+ 12 条边 + 6 个面——每个面是两个三角形——总共 12 个三角形。一个游戏角色模型——可能有几千到几万个顶点。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1473

使用单调栈求解最大矩形面积问题的C++实现

通过本文的介绍,我们详细讲解了如何使用单调栈求解砖墙中最大矩形面积的问题,并提供了完整的C++代码实现。希望通过本文的学习,你能掌握单调栈的基本概念及其在实际问题中的应用。如果你有任何疑问或建议,欢迎在评论区留言交流。

m0_57781768的博客 813

C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)

本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。

weixin_28432777的博客 283

threejs中的着色器入门一

什么事着色器? 固定渲染管线 ——这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。 如果有了固定渲染管线,编写程序就比较容易了,因为所有的变换都是由固定渲染管线来完成的,但是缺点就是自由度低。固定渲染管线只能完成一些最基本的操作,如果想要做一些特殊的处理,就比较麻烦了。...

凌风子夜 6635

7-15 估值一亿的AI核心代码

函数封装,含一个字符串中的所有的某个字串全部替换成另一个的函数,还有判断是否独立的函数以上图片来自新浪微博。!

weixin_73529240的博客 601

着色器和效果——2.0 介绍顶点着色器

第二章 介绍顶点着色器阅读此文表明您已同意文末的声明[译者序]经过上一章对HLSL的知识梳理,现在的你应该只有两种状态,第一种是已经焦头烂额没有兴趣再读下去了;另一种是觉得前面说的太容易了,读起来索然无味。如果你是第一种情况,那么建议你先补习一下计算机图形学和C++的知识,然后再来学习;如果你是第二种情况,那就对了!我们将从现在开始学习这最激动人心的三章。这三张可以说是涵盖了实用的Dire

RaymondKing的专栏 6155

Cadence OrCAD Capture 保持元器件编号情况复制元件,复制后元器件编号与复制前不同的问题解决

如下图所示复制时,已经勾选了“Preserve reference on copy”但是复制后的编号却与复制前不一样。本文简单介绍其原因及解决方法。

fydar的博客 3164

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

OpenGL ES几个概念-顶点着色器、片元着色器、EGL

一、OpenGL ES OpenGL ES是使用在手机端和嵌入式里的3D图形应用程序编程接口,是跨平台的API。OpenGL ES是OpenGL的简化版本。 OpenGL ES也分客户端Client和服务端Server,OpenGL ES framework属于客户端,与application共同运行在CPU上;OpenGL ES顶点着色器、片元着色器等对图形的处理运行在GPU上,是服务端。客户端向服务端提供数据,服务端通过顶点着色器、片元着色器等计算数据并显示。 二、 OpenGL ES 3.0 图

Jason_Lee155的博客 4953

【YOLOv12多模态融合改进】(可见光+红外)涉及像素级融合、特征级融合(中期、中后期、后期)、决策级融合的完整配置步骤以及二次改进方案

在网络输入阶段将多模态数据直接合并,形成统一的特征表示。

Limiiiing的博客 1212

opengl顶点着色器与片段着色器

当进行图形在显示屏上显示的时候,cpu会计算好一些数据,发送给GPU,由GPU来进行渲染计算,我们需要告诉GPU如何处理我们发送的数据,这就是渲染器。其实在之前的代码中,我们已经就在这样做了。我们发送了数据 三个顶点。但是这对于GPU是未知的,我们调用 glvertex的opengl方法,来告诉GPU 顶点属性的索引位置在第一位,发送过去的位置分量是二,也就是xy数据,发送过去的是浮点数不用再进行归一化处理,相邻顶点间的字节偏移。示例中每个顶点占2个float(8字节),故步长为8。

m0_47061915的博客 983

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Threejs进阶教程-着色器篇】9.顶点着色器入门

【Threejs进阶教程-着色器篇】9.顶点着色器入门,本文使用了一个简单的demo来入门顶点着色器

qq_42760477的博客 1616

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

着色器和效果——2.1 顶点声明

2.1 顶点声明阅读此文表明您已同意文末的声明到现在为止,我们已经使用自由顶点格式(flexible vertex format,FVF)来描述顶点结构中的各分量。但是,在可编程管线中,我们的顶点数据可以包含比用FVF所能表达的多的多的数据。因此,我们通常使用更具表达性的并且更强有力的顶点声明(vertex declaration)。注意:我们仍然可以在可编程管线中使用FVF——如果我

RaymondKing的专栏 4851

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Opengl复习笔记(一)——顶点着色器、片段着色器(内含代码)

好的,又是因为要面试,这个面试需要复习opengl、图像算法、机器学习、算法题。所以会写相应的系列文章。。。 opengl从入门到菜鸡工程师之路基础架构介绍顶点着色器、片段着色器顶点输入顶点着色器片段着色器把上面过程串起来数据输入纹理的使用 基础架构介绍 首先opengl是一个做显示的的东西。首先对他的一个基本流程有一个初步的概念。 常见的工作流程: 创建一个对象,用一个id保存他的应用 将对象绑定至上下文的目标位置(比如窗口对象) 设置绑定的一些选项 进行一系列的操作 将目标位置对象id设置回0,解绑这

小石子的博客 9108

【QOpenGL】VAO、VBO以及顶点着色器和片段着色器的实现

本文介绍了在QOpenGL窗口中绘制三角形的实现过程,重点讲解了VBO(顶点缓冲对象)和VAO(顶点数组对象)的作用及其协作流程。VBO用于存储顶点数据,提升渲染性能,而VAO则管理顶点数据的解析规则,简化配置流程。此外,文章还详细介绍了GLSL(OpenGL着色语言)的基础语法,包括数据类型、变量限定符和运算符等,并分别阐述了顶点着色器和片段着色器的功能与实现。顶点着色器负责处理顶点坐标变换和属性传递,片段着色器则计算像素的最终颜色。最后,文章简要提及了NDC(归一化设备坐标)的概念,作为图形渲染管线中的

Antonio915的博客 1693

DirectX 3D_基础之顶点着色器 顶点声明 顶点着色器的输入 顶点着色器的编写和编译 卡通着色 轮廓勾勒

每日一语:                       故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身行,行拂乱其所为,所以动心忍性,曾益其所不能。吃得苦中苦,方为人上人。没有哪件事情,可以轻轻松松成功。我们应该持之以恒,坚持奋斗!                        正文:                  顶点着色器入门:

Z18_28_19的专栏 2037

Unity3D Shader 顶点和片段着色器

Unity3D Shader 顶点和片段着色器

2301_76984003的博客 885

WebGL2 Fundamentals基础教程:理解顶点着色器和片段着色器

**WebGL2 Fundamentals基础教程**是学习现代Web图形编程的完美起点!🚀 如果你想掌握WebGL2的核心概念,特别是理解顶点着色器和片段着色器这两个关键组件,那么这篇文章正是为你准备的。WebGL2是现代Web图形API,它允许你在浏览器中创建高性能的2D和3D图形,而顶点着色器和片段着色器是WebGL2渲染管线的核心部分。 ## 🎯 什么是WebGL2着色器? 在We

gitblog_01143的博客 818
上一篇: 着色器和效果——2.1 顶点声明
下一篇: 着色器和效果——2.3 使用顶点着色器的步骤
RaymondKing
博客等级 码龄24年 10粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值