绘制语言(Shading Language)

from www.cs.virginia.edu/~tz3d/zthpanel.ppt

绘制语言(Shading Language)

1.Shading Language的相关概念

1.1 Shading
“The job of a surface shading procedure is to choose a color for each pixel on a surface, incorporating any variations in color of the surface itself and the effects of lights that shine on the surface ”   (Marc Olano)
也就是说:Shading最主要的工作就是计算每一个像素的颜色值,同时考虑光照的影响。

1.2 Procedural Shading
就是指:采用一个过程(/函数)的形式来描述一个表面(Surface)颜色值的计算方法。

1.3 Shader
这个过程 (/函数)就叫做Shader.

1.4 Shading Language
就是Procedure Shading中Shader所采用的语言.




2. 各种不同的Shading Language的实现
2.1 软件实现的Shading Language
2.1.1 RenderMan
由于采用软件实现,通常每帧的绘制需要数个小时。
主要应用于电影制作.
其技术核心就是提供了一个Shading Language,从而提供了一个很灵活的Shading效果的描述。

2.2.2 RenderMan Shading Language所描述的基本内容 :
- 光线如何从光源射出        Light Source Shader
- 光线与物体表面的相互影响    Surface Shader
- 光线在空气中传播时受到的影响     Volume Shader

2.2.3 RenderMan Shading Language的优点
易于生成复杂面光照
易于对平面光照产生随机或噪声效果,更真实
相比于修改几何模型,更易于产生细节
相比于 Texture Mapping,光照效果可随时间、距离及观察角度而改变

2.2.4 重要目的:
希望能提供一个统一的Shading 描述界面。也就是说,采用任意的一个渲染软件或者任意的一个渲染平台,都可以采用相同的Shader. 这将大量的节省开发时间。


2.2实时(Real-time) Shading Language
2.2.1几个有代表性的实例:
2.2.1.1PixelFlow’s PfMan ---UNC

The PixelFlow Shading System, (SIGGRAPH 98)
基于UNC大学的PixelFlow系统,速度可以达到30fps.
评价:虽然PfMan速度很快,效果也不错,不过由于PixelFlow系统并没有被产业界所广泛接受,因此也就限制了PfMan的发展


2.2.1.2 Interactive Shading Language    ---SGI
“Interactive Multi-Pass Programmable Shading” (SIGGRAPH ‘00)
-核心思想:多遍(Multi-pass)实现OpenGL的执行相当于执行Shading Language命令的运算器而Frame Buffer相当于存储器然后通过多遍(Multi-pass)的操作实现所有的命令操作.
-对硬件的主要:要求Frame Buffer和内存之间可以高速的读写。


2.2.1.3 Real-Time Shading System         ---Stanford (SIGGRAPH2001)
背景:
由于硬件发展越来越快,用户和开发人员对硬件的要求已经不仅仅是速度,还有就是可编程性(Programmability)。
虽然硬件可编程性越来越强,可是硬件的新特性却越来越难以使用,原因在于:
图形编程方法比较底层,硬件对程序员是不透明的。而且每一个硬件厂商都有自己的一套实现方案,于是导致在不同的硬件上开发程序需要采用不同的代码。   
所以,为了提高开发的效率和代码的可重用性,在硬件上建立一个尽量高层次的抽象层,使得代码可以适用于不同的硬件平台,成了产业界一个迫切的需求。

主要特点:
 Stanford大学开发的这个Real-Time Shading System 主要    围绕着可编程的图形显示芯片(例如:Geforce3)来展开的。结合了多遍的思想 和 最新硬件的可编程性。可以处理不同频度的计算模型。



2.2.1.4 CG (C for Graphics)         ---Nvidia
这是一个与硬件关系紧密的Shading Language。
主要特点:
在Vertex Shader / Pixel Shader的基础上提供了一个更高抽象层次的硬件编程方式,但是仍然显式地分开Vertex / Pixel 两个级别进行编程。
采用类似C语言的表达方式用户仍然需要有硬件结构相当全面的知识。
讨论站点www.cgshaders.org




小结:
实时 Shading Language的发展目标:
完全实现RenderMan的Shading Language的功能。真正实现与硬件无关。

实时 Shading Language的发展和图形硬件的发展是互动的。
实时 Shading Language现在还没有定型,随着图形硬件的不断发展,实时 Shading Language还会不断更新。
图形硬件的发展也会重点考虑如何更好地支持实时 Shading Language。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值