Shader Learing(Surface and Vertex&Fragment Shader篇)

Shader Learing分享第2篇(Surface and Vertex&Fragment  Shader篇)Shader原理:着色器(英语:shader)应用于计算机图形学领域,指一组供计算机图形资源在执行渲染任务时使用的指令,用于计算图像的颜色或明暗。但近来,它也能用于处理一些特殊效果,或者视频后处理。通俗地说,着色器告诉电脑如何用特有的一种方法去绘制物体。程序员将着色器应
摘要由CSDN通过智能技术生成

Shader Learing(Surface and Vertex&Fragment  Shader篇)

Shader原理:

着色器(英语:shader)应用于计算机图形学领域,指一组供计算机图形资源在执行渲染任务时使用的指令,用于计算图像的颜色或明暗。但近来,它也能用于处理一些特殊效果,或者视频后处理。通俗地说,着色器告诉电脑如何用特有的一种方法去绘制物体。
程序员将着色器应用于图形处理器(GPU)的可编程流水线,来实现三维应用程序。这样的图形处理器有别于传统的固定流水线处理器,为GPU编程带来更高的灵活性和适应性。以前固有的流水线只能进行一些几何变换和像素灰度计算。现在可编程流水线还能处理所有像素、顶点、纹理的位置、色调、饱和度、明度、对比度并实时地绘制图像。着色器还能产生如模糊、高光、有体积光源、失焦、卡通渲染、色调分离、畸变、凹凸贴图、边缘检测、运动检测等效果。
Shader language目前有3种主流语言:基于OpenGL的GLSL(OpenGL Shading Language),基于 Direct3D 的 HLSL (High Level Shading Language),还有NVIDIA公司的Cg (C for Graphic)语言。不过高级语言的一个重要特性是“独立于硬件”,在这一方面 shader language 暂时还做不到, shader language 完全依赖于 GPU 构架,这一特征在现阶段是非常明显的!任意一种 shader language 都必须基于图形硬件,所以 GPU 编程技术的发展本质上还是图形硬件的发展。在 shader language存在之前,展示基于图形硬件的编程能力只能靠低级的汇编语言。
Shader工作原理:GPU 上的两个组件: Programmable Vertex Processor (可编程顶点处理器,又称为顶点着色器)和 Programmable Fragment Processor (可编程片断处理器,又称为片断着色器)。顶点和片段处理器被分离成可编程单元,可编程顶点处理器是一个硬件单元,可以运行顶点程序,而可编程片段处理器则是一个可以运行片段程序的单元。顶点和片段处理器都拥有非常强大的并行计算能力,并且非常擅长于矩阵(不高于 4 阶)计算,片段处理器还可以高速查询纹理信息(目前顶点处理器还不行,这是顶点处理器的一个发展方向)。

CG语法:

一个Cg profile定义了一个“被特定图形硬件或API所支持的Cg语言子集”,任意一种shader language都是基于可编程图形硬件的(寄存器、指令集等),这也就意味着,不同的图形硬件对应着不同的功能子集。这些可选的语言功能包括某些控制结构和标准库函数。profile还定义了数据类型的精度,并且指定数据类型是否全局部或仅部分支持。profile按照功能可以划分为顶点profile和片段profile,而顶点profile和片段profile又基于OpenGL和DirectX的不同版本或扩展,划分为各种版本。
Shader本身是一个单纯的单元,就是对输入(顶点或像素或物体)进行能做的算术运算,然后把结果送出的一个固件。
1、内置元类型 
float:32 bit浮点类型/half:16 bit浮点/int:32 bit 整形/fixd:12 bit定点/bool:布尔值
Sampler*:纹理对象的句柄,分为 6 类:sampler、sampler1D、sampler2D、sampler3D、samplerCUBE和samplerRECT。string:不是每个都支持。
上述类型很多都被cg提供内置的向量数据类型(build-in vector data types),如float1/float4、bool2/bool3。Cg 还提供矩阵数据类型,不过最大的维数不能超过 4*4 阶:float1x1、float2x3
 Cg 中向量、矩阵与数组是完全不同,向量和矩阵是内置的数据类型(矩阵基于向量),而数组则是一种数据结构,不是内置数据类型。
数组类型/结构类型
关系操作符:<  小于,<=  小于或等于 ,!=  不等于 ,==  等于 ,>=  大于或等于,>  大于。
逻辑操作符:&& ,||  ,!  
数学操作符: * 乘法;/ 除法; - 取反; + 加法;—减法; % 求余; ++ ;——;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值