1 / 23

绘制语言( Shading Language ) 介绍

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

Download Presentation

绘制语言( Shading Language ) 介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 绘制语言( Shading Language)介绍 中国科学院软件研究所 重点实验室 朱腾辉 ChinaGraph 2002

  2. Overview • Shading Language的相关概念 • 各种不同的Shading Language的实现 • 软件实现的Shading Language • 实时(Real-time) Shading Language

  3. Overview • Shading Language的相关概念 • 各种不同的Shading Language的实现 • 软件实现的Shading Language • 实时(Real-time) Shading Language

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

  5. Shading Language的相关概念 • Procedural Shading • 就是指:采用一个过程(/函数)的形式来描述一个表面(Surface)颜色值的计算方法。 • Shader • 这个过程 (/函数)就叫做Shader. • Shading Language • 就是Procedure Shading中Shader所采用的语言.

  6. Overview • Shading Language的相关概念 • 各种不同的Shading Language的实现 • 软件实现的Shading Language • 实时(Real-time) Shading Language

  7. Overview • Shading Language的相关概念 • 各种不同的Shading Language的实现 • 软件实现的Shading Language • 实时(Real-time) Shading Language

  8. 软件实现的Shading Language 最经典的例子: • RenderMan---Pixar • 由于采用软件实现,通常每帧的绘制需要数个小时。 • 主要应用于电影制作,其创始人曾获得奥斯卡学术奖。 • A bug’ Life • 玩具总动员1/2 • 怪物公司…… • 其技术核心就是提供了一个Shading Language,从而提供了一个很灵活的Shading效果的描述。

  9. 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)); } RenderManShading Language

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

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

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

  13. Overview • Shading Language的相关概念 • 各种不同的Shading Language的实现 • 软件实现的Shading Language • 实时(Real-time) Shading Language

  14. 实时 Shading Language 几个有代表性的实例: • PixelFlow’s PfMan ---UNC • Interactive Shading Language ---SGI • Real-Time Shading System ---Stanford • CG (C for Graphics) ---Nvidia

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

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

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

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

  19. 实时 Shading Language(3) Real-Time Shading System ---Stanford 运行结果: 运行平台:Pentium III, 866 MHz,640x512 Bump-mapped bowling pins, textured floor 55 Frames/Second

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

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

  22. 实时 Shading Language 小结: • 实时 Shading Language的发展目标: • 完全实现RenderMan的Shading Language的功能。 • 真正实现与硬件无关。 • 实时 Shading Language的发展和图形硬件的发展是互动的。 • 实时 Shading Language现在还没有定型,随着图形硬件的不断发展,实时 Shading Language还会不断更新。 • 图形硬件的发展也会重点考虑如何更好地支持实时 Shading Language。

  23. 谢谢大家!本人联系方式zth@ios.ac.cn

More Related