绘制语言( Shading Language ) 介绍

23
绘绘绘绘绘绘绘绘Shading Languag Shading Languag e e 绘绘 绘绘 中中中中中中中中中中 中中中中中 中中中 ChinaGraph 2002

description

绘制语言( Shading Language ) 介绍. 中国科学院软件研究所 重点实验室 朱腾辉 ChinaGraph 2002. Overview. Shading Language 的相关概念 各种不同的 Shading Language 的实现 软件实现的 Shading Language 实时 ( Real-time ) Shading Language. Overview. Shading Language 的相关概念 各种不同的 Shading Language 的实现 软件实现的 Shading Language - PowerPoint PPT Presentation

Transcript of 绘制语言( Shading Language ) 介绍

Page 1: 绘制语言(  Shading Language ) 介绍

绘制语言( 绘制语言( Shading LanguageShading Language ))介绍介绍

中国科学院软件研究所重点实验室

朱腾辉

ChinaGraph 2002

Page 2: 绘制语言(  Shading Language ) 介绍

OverviewOverview

• Shading Language 的相关概念

• 各种不同的 Shading Language 的实现– 软件实现的 Shading Language– 实时 (Real-time) Shading Language

Page 3: 绘制语言(  Shading Language ) 介绍

OverviewOverview

• Shading Language 的相关概念

• 各种不同的 Shading Language 的实现– 软件实现的 Shading Language– 实时 (Real-time) Shading Language

Page 4: 绘制语言(  Shading Language ) 介绍

Shading LanguageShading Language 的相关概念的相关概念 • 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 最主要的工作就是计算每一个像素的颜色值,同时考虑光照的影响。

Page 5: 绘制语言(  Shading Language ) 介绍

Shading LanguageShading Language 的相关概念的相关概念 • Procedural Shading

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

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

• Shading Language– 就是 Procedure Shading 中 Shader 所采用的语

言 .

Page 6: 绘制语言(  Shading Language ) 介绍

OverviewOverview

• Shading Language 的相关概念

• 各种不同的 Shading Language 的实现– 软件实现的 Shading Language– 实时 (Real-time) Shading Language

Page 7: 绘制语言(  Shading Language ) 介绍

OverviewOverview

• Shading Language 的相关概念

• 各种不同的 Shading Language 的实现– 软件实现的 Shading Language– 实时 (Real-time) Shading Language

Page 8: 绘制语言(  Shading Language ) 介绍

软件实现的软件实现的 Shading LanguageShading Language

最经典的例子:• RenderMan   ---Pixar

– 由于采用软件实现,通常每帧的绘制需要数个小时。– 主要应用于电影制作,其创始人曾获得奥斯卡学术奖。

• A bug’ Life

• 玩具总动员 1/2

• 怪物公司……– 其技术核心就是提供了一个 Shading Language ,从而提

供了一个很灵活的 Shading 效果的描述。

Page 9: 绘制语言(  Shading Language ) 介绍

Surface dent(float Ks=.4, Kd=.5, Ka=.1, roughness=.25, dent=.4) {

float turbulence;

point Nf, V;

float I, freq;

/* Transform to solid texture coordinate system */

V = transform(“shader”,P);

/* Sum 6 octaves of noise to form turbulence */

turbulence = 0; freq = 1.0;

for (i = 0; i < 6; i += 1) {

turbulence += 1/freq + abs(0.5*noise(4*freq*V));

freq *= 2;

}

/* sharpen turbulence */

turbulence *= turbulence * turbulence;

turbulence *= dent;

/* Displace surface and compute normal */

P -= turbulence * normalize(N);

Nf = faceforward(normalize(calculatenormal(P)),I);

V = normalize(-I);

/* Perform shading calculations */

Oi = 1 – smoothstep(0.03,0.05,turbulence);

Ci = Oi*Cs*(Ka*ambient() + Ks*specular(Nf,V,roughness));

}

RenderManRenderManShading Shading

LanguageLanguage

Page 10: 绘制语言(  Shading Language ) 介绍

RenderManRenderManShading LanguageShading Language

• RenderMan Shading Language 所描述的基本内容 :

1 光线如何从光源射出 Light Source Shader

2 光线与物体表面的相互影响 Surface Shader

3 光线在空气中传播时受到的影响 Volume Shader

Page 11: 绘制语言(  Shading Language ) 介绍

RenderManRenderManShading LanguageShading Language

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

离及观察角度而改变

Page 12: 绘制语言(  Shading Language ) 介绍

RenderManRenderManShading LanguageShading Language

• 重要目的:– 希望能提供一个统一的希望能提供一个统一的 Shading Shading 描述界面。描述界面。

• 也就是说,采用任意的一个渲染软件或者任意的一个渲染平台,都可以采用相同的 Shader. 这将大量的节省开发时间。

Page 13: 绘制语言(  Shading Language ) 介绍

OverviewOverview

• Shading Language 的相关概念

• 各种不同的 Shading Language 的实现– 软件实现的 Shading Language– 实时 (Real-time) Shading Language

Page 14: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading LanguageShading Language

几个有代表性的实例:1. PixelFlow’s PfMan ---UNC

2. Interactive Shading Language ---SGI

3. Real-Time Shading System ---Stanford

4. CG (C for Graphics) ---Nvidia

Page 15: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading Language(1)Shading Language(1)PixelFlow’s PfMan ---UNC -- The PixelFlow Shading System, (SIGGRAPH 98)

基于 UNC 大学的 PixelFlow 系统,速度可以达到 30fps.

评价:– 虽然 PfMan 速度很快,效果也不错,不过由于 PixelFlow 系统

并没有被产业界所广泛接受,因此也就限制了 PfMan 的发展

Page 16: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading Language(2)Shading Language(2)

Interactive Shading Language

---SGI“Interactive Multi-Pass Programmable

Shading” (SIGGRAPH ‘00)

核心思想:多遍 (Multi-pass) 实现• OpenGL 的执行相当于执行 Shadin

g Language 命令的运算器• 而 Frame Buffer 相当于存储器• 然后通过多遍 (Multi-pass) 的操作

实现所有的命令操作对硬件的主要:

要求 Frame Buffer和内存之间可以高速

的读写。

Page 17: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading Language(3)Shading Language(3)Real-Time Shading System ---Stanford

(SIGGRAPH2001)背景:

• 由于硬件发展越来越快,用户和开发人员对硬件的要求已经不仅仅是速度,还有就是可编程性 (Programmability) 。

• 虽然硬件可编程性越来越强,可是硬件的新特性却越来越难以使用,原因在于:

– 图形编程方法比较底层,硬件对程序员是不透明的。– 而且每一个硬件厂商都有自己的一套实现方案,于是导致在不同的硬件上开发程序需要采用不同的代码。

所以,为了提高开发的效率和代码的可重用性,在硬件上建立一个尽量高层次的抽象层,使得代码可以适用于不同的硬件平台,成了产业界一个迫切的需求。

Page 18: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading Language(3)Shading Language(3)Real-Time Shading System ---Stanford 主要特点:

– Stanford大学开发的这个 Real-Time Shading System 主要 围绕着可编程的图形显示芯片(例如:Geforce3)来展开的。

– 结合了多遍的思想 和 最新硬件的可编程性。– 可以处理不同频度的计算模型。

Page 19: 绘制语言(  Shading Language ) 介绍

运行平台 : Pentium III, 866 MHz, 640x512Bump-mapped bowling pins, textured floor55 Frames/Second

实时 实时 Shading Language(3)Shading Language(3)Real-Time Shading System ---Stanford 运行结果:

Page 20: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading Language(4)Shading Language(4)

CG (C for Graphics) ---Nvidia这是一个与硬件关系紧密的 Shading Language 。– 主要特点:

• 在 Vertex Shader / Pixel Shader 的基础上提供了一个更高抽象层次的硬件编程方式,但是仍然显式地分开 Vertex / Pixel 两个级别进行编程。

• 采用类似 C 语言的表达方式• 用户仍然需要有硬件结构相当全面的知识。

– 讨论站点 www.cgshaders.org

Page 21: 绘制语言(  Shading Language ) 介绍

Real-Time Shading Language(4)Real-Time Shading Language(4)CG (C for Graphics) ---Nvidia

Page 22: 绘制语言(  Shading Language ) 介绍

实时 实时 Shading LanguageShading Language

小结:– 实时 Shading Language 的发展目标:

• 完全实现 RenderMan 的 Shading Language 的功能。• 真正实现与硬件无关。

– 实时 Shading Language 的发展和图形硬件的发展是互动的。

• 实时 Shading Language 现在还没有定型,随着图形硬件的不断发展,实时 Shading Language还会不断更新。

• 图形硬件的发展也会重点考虑如何更好地支持实时 Shading Language 。

Page 23: 绘制语言(  Shading Language ) 介绍

谢谢大家!谢谢大家!

本人联系方式本人联系方式[email protected]