Vertex Shader & Pixel Shader 介绍

原创 2002年01月16日 09:47:00
 

Vertex Shader & Pixel Shader  介绍

 

1.         固定功能的图形处理流水线(fixed function graphics pipeline

能够实现Vertex ShaderPixel Shader的显卡的图形处理流水线被称作为是可编程的,相对而言,在此之前的图形处理流水线被称作为是固定功能(fixed function,下面是OpenGL图形处理的一个简图:

          完整的OpenGL图形处理流水线为称作为OpenGL机器(OpenGL machine,在OpenGL参考手册上可以找到这份框架图),就像一个电路图一样,上面有许许多多的开关,我们可以打开或者闭合这些开关,还可以设置图中各个处理单元的参数以控制处理的方法,但是无论如何整个系统的功能已经确定下来了,你只有使用或者不使用某些功能和控制某些功能的具体执行方法的权利而无法实现自己定制的功能,所以这样的图形处理流水线被称作为是固定功能的。(有实力的显卡厂商在自己的OpenGL实现中添加了许多OpenGL扩展实现了一些标准OpenGL规范所没有的功能,现在有了可编程的图形流水线,一般用户也有机会实现一些自己定制的功能。)

 

2.         Vertex Shader & Pixel Shader

虽然实现Vertex ShaderPixel Shader功能的图形流水线被称作为是可编程的,但是实际上可编程的只有流水线的一部分,正如Vertex Shader Pixel Shader的字面意思一样,现在可编程的部分只有处理顶点的和处理象素的单元。

Vertex Shader Pixel Shader在不同的文档里面有不同的叫法,Nvidia在自己的OpenGL扩展中把Vertex Shader叫做Vertex Program、把Pixel Shader叫做Texture Shader3Dlabs在自己提出一份OpenGL 2.0的提议里面把这两者分别叫做Vertex ShaderFragment(片元)Shader。抛开叫法的差异,实际上的功能都是差不多的,下面的一段话对这种状况作了一个完美的解释:

    Shader or Program? Shader has been used as the preferred name as this fits in with common usage in RenderMan and DX8. There is some argument that shading has connotations of being a color operation so doesn't fit with a vertex operation. RenderMan doesn't make this distinction, nor does DX8. It seems wise to go along with the common usage of shader as a general term for a program which operates on some part of a graphics pipeline.

    (Shader 还是 Program,在RenderManDX8中,通常情况下倾向于使用Shader这个名字。这个叫法有一些争议,因为Shading蕴涵地表示为进行了相关的颜色操作而不适合用来描述顶点操作。但是在RenderManDX8中并没有理会这种区别。所以跟随通常的叫法,把Shader作为在图形处理流水线某些部分起作用的program的一般术语似乎是一个明智的做法。)

 

 

Vertex and Fragment Shader(可编程渲染管线)

一、引言 Vertex and Fragment Shader:最强大的Shader类型,下文中简称V&F Shader,属于可编程渲染管线. 使用的是CG/HLSL语法。分为2个部分vertex顶点...
  • lichaoguan
  • lichaoguan
  • 2015年01月28日 14:19
  • 2037

unity shader 可编程管线(二) 顶点和片段着色器(Vertex Shader and Fragmet Shader)

顶点着色器和片段着色器。 可编程Shader的特点为: 功能最强大、最自由的形态。特征是在Pass里出现CGPROGRAM和ENDCG块编译指令#pragma。详见官网Cg snippet...
  • hpm21
  • hpm21
  • 2016年02月18日 11:39
  • 507

【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明

两种方式的透明  在这篇文章里面提到,透明有两种方式,一种被称作Alpha Test方式,另一种是Alpha Blending方式。  Alpha Test方式会在Fragment阶段根据Alpha值...
  • dbtxdxy
  • dbtxdxy
  • 2015年08月10日 19:37
  • 1990

用一个Pixel Shader(像素着色器)来介绍HLSL

首先我们来看下这个项目的效果,一个照片被"黑白化" 下面这张是原图。 我们来看下是如何实现的,首先你要有点知识关于“DirectX Texture(纹理)”. 如果你还没有的话,可以...
  • fox64194167
  • fox64194167
  • 2013年02月02日 16:55
  • 3586

【Unity Shaders】初探Surface Shader背后的机制

转载请注明出处!写在前面一直以来,Unity Surface Shader背后的机制一直是初学者为之困惑的地方。Unity Surface Shader在Unity 3.0的时候被开放给公众使用,其宣...
  • candycat1992
  • candycat1992
  • 2014年10月11日 15:32
  • 48936

【猫猫的Unity Shader之旅】之初识屏幕特效

Shader除了可以处理模型的显示效果外,还有一个腻害的功能就是对要渲染的画面进行整体的处理,也就是屏幕特效。常见的比如《鬼泣4》里的动态模糊效果,景深效果,还有一些全局的颜色矫正,比如可以做出像《英...
  • dbtxdxy
  • dbtxdxy
  • 2015年04月20日 01:28
  • 2018

Unity Shader基础(2)--shader的结构解析

摘自冯乐乐的《unity shader 入门精要》 由于之前看《Unity shader 入门精要》看到太过粗略了,只关注书中的shader代码,导致好多代码都是不是很懂,所以就往回看, ...
  • qq_28221881
  • qq_28221881
  • 2016年10月25日 21:15
  • 1601

OpenGL 各个shader的作用和区别

OpenGL4.0发布了Tessellation shader(Control + Evaluation shader)。到OpenGL4.* 为止,现在OpenGL已经支持了5种不同类型的shade...
  • fanhenghui
  • fanhenghui
  • 2017年05月03日 18:47
  • 618

【Unity Shaders】学习笔记之Shader简介(一)

一、Shader简介   Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出将图像绘制到...
  • liulongling
  • liulongling
  • 2016年05月27日 18:40
  • 1894

(二)OpenGL中的Shader

学习总结自:http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-star...
  • huangcanjun187
  • huangcanjun187
  • 2016年09月08日 19:30
  • 2012
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Vertex Shader & Pixel Shader 介绍
举报原因:
原因补充:

(最多只允许输入30个字)