游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1641|回复: 4

GLSL全书预览

[复制链接]

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2005-2-11 15:51:00 | 显示全部楼层 |阅读模式
可编程图形硬件几乎与图形硬件同时诞生。从那以后,在图形硬件的设计中加入更多的灵活性成了硬件开发者们生命中不可缺少的一部分。图形API在继续发展,同时因为硬件设计从开始到结束要经历2年或者更多,为了确保那些硬件产品能支持那些发行时或者之后的图形API,唯一方法就是在一开始的时候就建入一些可编程性。

直到现在,可编程图形硬件领域仍然只是很少的一部分人的专利,主要是研究学者以及图形硬件驱动程序的开发者。对可编程硬件的研究已经开展多年,但是给应用程序开发者以及最终用户使用的可行的硬件和软件仍然没有生产出来。图形硬件驱动程序的开发者们也只能将目光聚焦于支持当时的最重要的图形API(如:PHIGS,PEX,IRIS GL,OpenGL,D3D等等)上。直到现在,这些API也没有揭示出底层硬件的可编程性,于是应用程序开发者们只能强制地使用这些传统图形API提供的固定功能。

而硬件公司也没有揭露他们产品的可编程性,这是因为教育和支持客户去使用低级的、设备相关的接口会花费很多钱,而这些接口在生产新的硬件时也会改变。使用设备相关的图形硬件接口的应用程序开发者将不得不在每次新的硬件生产出时更新他们的软件这样一个令人气馁的任务。并且忘记程序要支持不同厂家的硬件!

随着我们进入21世纪,一些图形硬件的基本规则面临着挑战。应用程序开发者们不再像以前一样扩展包装(envelop,译者:这里有点迷惑……不大明白作者的意思,郁闷了),而是需要硬件具有多种多样的新的特性,以创造复杂的屏幕效果。结果是,新的图形硬件比以前更具有可编程性。标准图形API也面临着考验,它们需要跟上硬件“革命”的步伐。以OpenGL为例,结果是在硬件销售商忙着实现对客户需求的新特性的支持的同时,大量的扩展进入到核心API当中。

所以我们现在正站在图形工业的十字路口上。变化已经发生了,一方面带领我们从那古板的、使用固定功能的图形硬件和API的世界里进入到一个崭新的世界。在这里,显示芯片(VPU)就像CPU一样重要。VPU将会被充分利用于处理动态媒体,比如说3D图形或者是视频。并行处理浮点数据成了VPU的主要工作,而VPU的灵活性意味着它可以处理除了传统的图形指令流以外的其他数据。应用程序可以方便地同时使用CPU和VPU的能力,利用他们强有力的性能漂亮地执行任务。

这本书描述了图形硬件的可编程性是如何通过高级语言在交叉平台的3D图形API:OpenGL中来实现的。这个语言,我们叫做OpenGL高级着色器语言,允许程序完全控制图形管道的绝大部分,而不再局限于图形硬件设计者选择的固化在硅晶片中的渲染算法和公式。软件设计者们利用这可编程性开始实时地创造着令人震撼的效果。

本书预期的读者是那些有兴趣写着色器(shader)的程序员。各位有兴趣用OpenGL高级着色器语言写着色器的,可以把把本书作为教程以及参考手册。读者有各自的读书方式,但是我们不推荐从后向前阅读。

读者要吸收这本书中的资料,不必预先预备OpenGL的知识,但如果你懂得如何使用OpenGL的话,会很有帮助。本书包含了一章,用来进行对OpenGL的简短的“复习”,但本书并不打算成为一本OpenGL的教程或者是参考手册。打算用OpenGL以及着色器来开发程序的读者应该具有一个OpenGL编程参考文档作为本书的补充。

计算机图形学需要一定的数学基础,因此一些代数和三角学知识对读者理解和重视一些细节描述会有帮助。随着可编程图形硬件的到来,图形管道的关键部分又重新回到了开发者的控制之下。为了在这个环境下成功地写出着色器,开发者必须懂得计算机图形学的数学基础。

书中包括的着色器主要是一些简短的程序,是用来表现OpenGL高级着色器语言的能力的。这些例子并不一定是实现某个特效的最好方法。当然,由于可编程硬件的灵活性,实现那个效果的最好方法可能会被发现。每个着色器在给定的硬件上性能都可能得到改进,如果小心地减少或消去锯齿的话,图形质量也会得到提高。

我认为这些着色器的代码在清晰性、可移植性以及性能上得到了很好的平衡。用他们来学习OpenGL高级着色器语言,而在工程中改进他们,我觉得这是一个不错的主意。

本书中所有的图象都是在第一个对OpenGL高级着色器语言提供支持的硬件加速器(3Dlabs wildcat VP)上生成的,除了那个玩具球(这是在ATI的硬件上由 ATI研究室生成的)。这样实现有多种局限性,所以在一些情况下可能会出现着色器在这个硬件上可以运行,但是依赖于硬件或驱动。我们会在本书中对这种着色器描述和讨论。最终最好版本的着色器可以在本书的联结:http://3dshader.com上找到。

本书写的时候,OpenGL高级着色器语言的实现还处于萌芽时期。在选择着色器例子上,我的目的是提供现在可以工作的着色器,而不是实现能够支持整个OpenGL高级着色器语言说明书后可以工作的着色器。更长、更复杂的着色器会成为本书第二版的首选,因为那些着色器利用了那些现在没有实现的特性。

我知道这本书包含很多错误,但是我已经尽量地减少错误的发生。如果你发现本书中有错误的话,请发邮件给我(randi@3dshader.com),同时我在网站上会维护一个排错清单。

(译者:我也知道本书会包含很多翻译错误,但是我已经尽量地减少错误的发生。如果你发现本书中有错误的话,请发邮件给我 sakura@china.com ,同时我会在我的网站 http://www.autsak.com 以及论坛 http://www.autsak.com/bbs 上维护一个列表。大家有什么意见或者建议或者问题或者纯净水,请给我写信或者在论坛提出。)

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
 楼主| 发表于 2005-2-11 15:53:00 | 显示全部楼层

Re:GLSL全书预览

本来计划早点翻译的……结果因为考试耽搁了一段时间……
放假是魔鬼……偶要开始干活了……

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-11 16:00:00 | 显示全部楼层

Re:GLSL全书预览

听你说了几年
就不见翻译出来的文章
opengl shading language那本电子书好厚哦
你慢慢翻译.....感动......

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
 楼主| 发表于 2005-2-11 16:11:00 | 显示全部楼层

Re:GLSL全书预览

偶E文差……就当准备4级考试了……
翻译错了兄弟们提醒偶呀

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-2-11 21:23:00 | 显示全部楼层

Re:GLSL全书预览

那加油了,真是个大工程呀~等着看成品书。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 08:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表