首页
学习
活动
专区
工具
TVP
发布

程序员叨叨叨

专栏作者
100
文章
124001
阅读量
23
订阅数
【率土之滨】零元党S1发育指南(更新中)
主五要三: 圈地概念,主城五格范围内(不算主城城区格),要塞三格范围内的领土一般其他玩家不应该来攻打,死人(长时间不上线的玩家)除外。
代码咖啡
2018-12-04
16.2K0
【转】从零开始手敲次世代游戏引擎(二)
上一篇我们写了一个最基本的Hello Engine,并用Visual Studio的命令行工具,cl.exe进行了编译。
代码咖啡
2018-09-29
1.5K0
【转】从零开始手敲次世代游戏引擎(序)
大家好。我“正式”从事软件工程师这个职业已经快15年了。至于编程的历史则更长,有20余年了。记忆当中第一次编程的机器里只有ROM BASIC,用“*”打了个金字塔。屏幕是那种单色的cga,只能显示绿色的字符。
代码咖啡
2018-09-29
6920
8.4 CG 标准函数库
和 C 的标准函数库类似,Cg 提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect 函数,求取折射光线方向向量可以使用 refract 函数,做矩阵乘法运算时可以使用 mul 函数。
代码咖啡
2018-09-29
1.8K0
8.3 入口函数
通常高级语言程序中只有一个入口函数,不过由于着色程序分为顶点程序和片断程序,两者对应着图形流水线上的不同阶段,所以这两个程序都各有一个入口函数。
代码咖啡
2018-09-29
1K0
8.1 函数第 8 章 函数与程序设计
通过第 5 章到第 7 章的阅读,我们已经知道了怎么声明变量(第 5 章),怎么写表达式和语句(第 6 章),怎么将输入 \ 输出参数绑定到语义词(第 7 章),本章将首先描述 Cg 语言中函数的写法,以及函数是否可以重载;然后阐述顶点 \ 片段着色程序中入口函数的概念(类似 C\C++中的 main()函数);最后,以 Cg 标准函数库来结束本章。
代码咖啡
2018-09-29
5540
7.5 语义词(Semantic)与语义绑定(Binding Semantics)
语义词,表示输入图元的数据含义(是位置信息,还是法向量信息),也表明这些图元数据存放的硬件资源(寄存器或者纹理缓冲区)。顶点着色程序和片段着色程序中 Varying inputs 类型的输入,必须和一个语义词相绑定,这称之为绑定语义(binding semantics)。
代码咖啡
2018-09-29
1.1K0
7.3 const
Cg 语言也提供 const 修辞符,与 C\C++中含义一样,被 const 所修辞的变量在初始化之后不能再去改变它的值。下面的例子程序中有一个声明为 const 的变量被赋值修改:
代码咖啡
2018-09-29
6540
6.5 Swizzle 操作符
可以使用Cg语言中的swizzle操作符(.)将一个向量的成员取出组成一个新的向量。swizzle操作符被GPU硬件高效支持。swizzle操作符后接x、y、z、w,分别表示原始向量的第一个、第二个、第三个、第四个元素;swizzle操作符后接 r、g、b和a的含义与前者等同。不过为了程序的易读性,建议对于表示颜色值的向量,使用swizzle操作符后接r、g、b和a的方式。
代码咖啡
2018-09-26
1.2K0
7.2 uniform
Cg 语言将输入数据流分为两类(参见文献[3]Program inputs and Outputs ):
代码咖啡
2018-09-26
4130
7.1 Cg 关键字第 7 章 输入\输出与语义绑定
第三章从 GPU 运行原理和数据流程的角度阐述了顶点着色程序和片段着色程序的输入输出,即,应用程序(宿主程序)将图元信息(顶点位置、法向量、纹理坐标等)传递给顶点着色程序;顶点着色程序基于图元信息进行坐标空间转换,运算得到的数据传递到片段着色程序中;片段着色程序还可以接受从应用程序中传递的纹理信息,将这些信息综合起来计算每个片段的颜色值,后将这些颜色值输送到帧缓冲区(或颜色缓冲区)中。
代码咖啡
2018-09-26
6750
6.3 数学操作符(Math Operators)
Cg语言对向量的数学操作提供了内置的支持,Cg中的数学操作符有:*乘法、/除法、-取反、+加法、—减法、%求余、++、——、*=、/=、+=、-=。后面四种运算符有时被归纳入赋值操作符,不过它们实际上进行数学计算,然后进行赋值, 所以这里也放入数学操作符中进行说明。
代码咖啡
2018-08-28
5540
6.2 逻辑操作符(Logical Operators)
Cg语言中有3种逻辑操作符(也被称为boolean Operators),如表 2 所示,逻辑操作符运算后的返回类型均为bool类型。
代码咖啡
2018-08-28
3360
5.2 数组类型
在着色程序中,数组通常的使用目的是:作为从外部应用程序传入大量参数到 Cg 的顶点程序中的形参接口,例如与皮肤形变相关的矩阵数组,或者光照参数数组等。
代码咖啡
2018-08-28
3690
4.4 CG Profiles
Profile 在英文中的意思是“侧面、轮廓”,文献[1]第三页写到:A Cg profile defines a subset of the full Cg language that is supported on a particular hardware platform or API(CgUsersManual 21 页)。即一个 Cg profile 定义了一个“被特定图形硬件或 API 所支持的 Cg 语言子集”,从前面的分析我们可以知道,任意一种 shader language 都是基于可编程图形硬件的(寄存器、指令集等),这也就意味着:不同的图形硬件对应着不同的功能子集。Profile 按照功能可以划分为顶点 Profile 和片断 Profile,而顶点 profile 和片段 profile 又基于 OpenGL 和 DirectX 的 不同版本或扩展,划分为各种版本。从某种意义上而言,OpenGL 和 DirectX 的发展历程成就了 Cg 语言。
代码咖啡
2018-08-28
3910
5.3 结构类型
Cg 语言支持结构体(structure),实际上 Cg 中的结构体的声明、使用和 C++ 非常类似(只是类似,不是相同)。一个结构体相当于一种数据类型,可以定义该类型的变量。引入结构体机制,赋予了 Cg 语言一丝面向对象的色彩。还记得 C++中,结构体与类的区别吗?没有区别,除了默认访问属性在结构体中为 public,类中为 private,所以结构体与类是非常近似的,由此可以看出 shader 语言的发展趋势还是向着具有面向对象特性的高级语言。不过目前的 Cg 语言中的结构体以展现“封装”功能为主,并不支持继承机制。
代码咖啡
2018-08-28
2710
6.1 关系操作符(Comparison Operators)
在上一章中,我们已经介绍了Cg语言的基础数据类型(7种)、内置数据类型,以及数组、结构、接口等类型,本章将在此基础上讨论Cg中的表达式,表达式由操作符(operator)关联一个或多个操作数(operand)构成,我们首先阐述各种类型的操作符,并结合数据类型讲解操作符的具体使用方法。
代码咖啡
2018-08-28
3850
5.1 基本数据类型第 5 章 CG 数据类型
本章将着重介绍Cg语言中预定义的内置(built in)的、或称为基本(primitive)的数据类型。然后介绍可以用来声明对象的各类类型,主要是数组和结构类型。学习本章时,需要体会内置向量类型和数组类型的区别。
代码咖啡
2018-08-28
7400
4.3 CG 编译
计算机只能理解和执行由 0、1 序列(电压序列)构成的机器语言,所以汇编语言和高级语言程序都需要进行翻译才能被计算机所理解,担负这一任务的程序称为语言处理程序,通常也被称为编译程序。例如 C 或者 C++ 编写的程序,需要首先编译成可执行文件(.exe 文件),然后才能在 GPU 上运行,且一旦编译后,除非改变程序代码,否则不需要重新编译,这种方式称为静态编译(static coompilation)。静态编译重要的特征是:一旦编译为可执行文件,在可执行文件运行期间不再需要源码信息。而动态编译(dynamic compilation)与之相反,编译程序和源码都要参与到程序的运行过程中。
代码咖啡
2018-08-28
7980
4.1 开始 Cg 之旅第 4 章 Cg 语言概述
Cg(C for Graphcis)语言,是 NVIDIA 与 Microsoft 合作研发,旨在为开发人员提供一套方便、跨平台(良好的兼容性),控制可编程图形硬件的高级语言。Cg 语言的语法结构与 C 语言非常类似,使用 Cg 编写的着色程序默认的文件后缀是*. Cg。
代码咖啡
2018-08-28
8310
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档