2004。06。05

A(AF17-shaowei For the good of web3d):

A: m17,忙什么呢?
A: 你有有关 Bitmanagement 最新播放器的最新资料吗?
A: 嗯?
M: http://17de.com/x3d/BS_contact/BS_Contact_VRML.html
M: Bitmanagement 推出 BS Contact VRML / X3D 6.2 beta 预览版
M: 要 DirectX 9 显卡才可以看
M: http://www.bitmanagement.de/developer/contact/preview/6.2/
A: 可以下载了吗?
A: 只有预览啊,没法下载吧,
M: 有啊
A: 怎么我找不到?他就是有6.1的下载阿
M: 就那个网址啊
A: 哦 Installation 这里..

... ... ... ... ...

M: 装好以后看这边 http://www.bitmanagement.de/developer/contact/preview/6.2/shader/
M: 着色器效果演示,很不错
A: 终于开始下载了,
A: 我前两天也就看到了,只是老找不到下载

... ... ... ... ...

M: BS Contact 6.2 在率先 VRML / X3D 中支持 Direct X 9
M: 效果很好,水、阴影、倒影、光线效果都可以直接用程序化着色器了
M: 为看这个我还换了块显卡呢 ATI 9550
A: Octagon 下个版本也要加入 vertex shader了
M: 还有 mediamachine Flux 也要加
M: 程序化着色器将是一个 X3D 下的通用标准,但现在还只是提议
M: http://17de.com/x3d/www.web3d.org/x3d/workgroups/x3d-shaders.html
A: 打算什么时候开始翻译这一套提议呢?
M: 先看懂在说吧,这套提议离 X3D/iso 还远着呢
A: 好的.....
A: 你觉得 Flux 怎么样?
M: 最近还没测试他的新浏览器
A: shader 这个东西我再去年的时候,也就知道了,不过那时候没有哪家公司支持。我也不太了解它的东西,不过感觉动静不大
M: 现在感觉好像不错
M: 你开始看 6.2 的范例了么
M: 没
A: 平心而论,我觉得还是 Bitmanagement 更好一点
A: 没有,还在下载
A: 还有1分34秒
A: 我指的是现在 Bitmanagement 要更好一点,至于以后……

M: http://www.bitmanagement.de/developer/contact/preview/6.2/shader/

M: :-)
M: 效果咋样?
A: 可能我的显卡的问题吧
Download referred from http://www.bitmanagement.de/developer/contact/preview/6.2/common/ViewVRML.php?reftitle=Shader&wrl=../../../../contact/examples/shader/teapot_shader_simple.wrl as Load
Error compiling shader : error X3506: unrecognized compiler target ''Shader VertexShader1
M: 你什么显卡啊?
A: Geforce2 Mx 400 32MB
M: 不支持任何 mx 类型的显卡
M: 需要 geforce FX 5200、 ATI 9500 以上级别的显卡才能支持 DirectX 9
A: 那我惨了.....
A: 过些日子去弄一个geforce FX 5200。Vertex Shade是真的计算出来的了?
M: ATI 9550 比 geforce FX 5200 好
M: 我找图你看,正好我要写篇东西,等着
A: 我是担心价格问题.....,另外就是如果我的显卡太好了,去到别的机器上,反而弄得他们不好办....
M: :-)
A: 现在日新月异的....时间紧迫啊,
A: 好的
A: 我记得在x3d的多重纹理中 有一个 TextureCoordinateGenerator 域可以用来做折射和反射效果,怎么现在好像没人用?
M: 这个是假的,模拟的
M: 但是用程序化着色器可以做出模拟实际场景的
M: 不需要预选染反射贴图


M: 我们从第一个图说起

Run

A: 好的,
M: vertex shader 就是顶点着色,就相当于 vertex color
M: 光线计算也是基于顶点的
A: 并且可以通过脚本编写来实现,
M: 如果仔细看,可以发现光影是随着网格线的
A: 这个和 phong Shade 有些相似。呵呵
M: 不可以说 ”这个和phong Shade有些相似“
A: 嗯,
M: 顶点着色和像素着色都可以使用 phong 光照模型
A: 为什么?我记得phong 就是基于定点来计算光线的
M: 顶点着色用 phong 光照模型计算顶点上的光照效果,然后用过渡的方法填充顶点之间的颜色。
M: 如果网格很大的话,光线效果就会是一片一片的
M: 顶点着色和 phong 光照模型是原来 VRML 中使用的一种光照模型
M: 但是 DirectX 9 支持的程序化顶点着色引擎可以让我们使用自己的光照模型,
M: 我们可以自己定义甚至可以用一种模拟光能传递的光照模型,使用像 lightscape 或 3ds max 6 的光能传递的那种顶点着色
A: 嗯,
M: 顶点着色器下也可以使用不同的光照模型,比如可以专门使用一种模拟金属或模拟塑料的光照模型,但仍然是基于顶点计算的
M: 这是程序化顶点着色引擎和原来技术的区别
A: 实在是一种很大的进步
A: 不过我有些担心机器的性能,特别是在用于分布式网络各种用户
A: 有些...苛刻
M: 程序化的着色器需要下载高级着色语言的脚本文件,然后在客户机上渲染光线网格。
M: 由于不需要下载预渲染的光线信息,下载速度会加快

M: 光照也可以用程序化像素着色器来计算

Run

M: 这也是用 phong 光照模型来计算的
M: 大概看上去效果差不多,但可以发现这个光照更自然些
A: 嗯,对,我也刚刚想到这一点
M: 比如在圆型的部分,顶点着色的光影有一些四边形化的感觉,这些四边形就是物体的网格点
M: 而像素着色器对每一个像素进行渲染,所以过渡部分是平滑的,象那个高光就是圆形的
A: 嗯,M: 在 DirectX 6 以前 3D 硬件只能做很少的工作
M: Direct X 7 中加入了 硬件 T & L 的支持
M: T & L - 变换和光照
M: 图形硬件中可以直接处理顶点的变换和处理光照模型
M: 这是 Direct3D 7 中的 T&L , 在 DirectX 8 和 9 中属于顶点着色器部分
M: 看这个场景

Run

A: 这一张有类似于辐射的效果
M: 顶点着色器不光是处理光照,顶点的变换也使用顶点着色器的硬件
M: 比如把一个模型网格上的点往不同方向推动

Run

M: 比如这个海洋中的顶点也是使用顶点着色器来推动的
A: 对了,这样就可以用来代替使用动画纹理,并且在加上coordinate的变换就可以做出很逼真的波澜了还是已经不需要在使用坐标变换了?
M: 是的
M: 这些效果将使用专门供着色器使用的脚本来编写
M: 比如现在支持一些 Fx 脚本
A: 其它的还有吗?
M: 还有微软的 HLSL 语言
A: 我记得 OpenGL Shader 也是可以编写

M: 另外一个是像素着色器
M: 向 DirectX 7 中开始支持的环境反射贴图,立方体反射贴图,环境凹凸贴图在 DirectX 9 中都归入了像素着色器部分
M: DirectX 8 或 9 中直接支持底层硬件的操作运算,同样的几何运算单元可以通过编程来实现 环境反射贴图,立方体反射贴图,环境凹凸贴图这样的效果

RunRunRun

M: 比如这里的环境反射和凹凸
M: 这时可以通过法线贴图生成的凹凸
M: 也就是 Dotproduct3X产生的凹凸
A: 这么一来,对于创作者来说更简单了,但Dotproduct3x的凹凸贴图,需要特别处理
M: 如果需要实际的凹凸需要使用到置换( displacement) 贴图
M: 置换( displacement) 贴图还是使用相同的硬件单元进行计算,只不过是换了一个着色程序
M: 置换贴图可以改变像素在空间中的位置
M: 实时渲染的时候只需要对看见的像素进行置换计算,而不需要对整个模型的顶点进行置换计算,所以效率会高些
A: 嗯,
M: 但像素着色器的速度和分辨率相关,分辨率增加一倍,着色器的效率就会下降一倍
M: 不同的效果对应不同的算法
A: 我想使用顶点着色器,应该不存在这一个问题,
M: 所以视情况使用顶点着色或使用像素着色
M: 然后自己根据不同的算法编写不同的效果脚本
M: 或借用别人编好的脚本
M: 比如像这里的凹凸贴图效果或环境反射效果

RunRunRun

M: 比如毛皮或半透光的材质都可以模拟出来
M: 就象在 3ds max 中可以直接编写这些材质插件一样


M: DirectX 9 硬件中提供了一些运算单元,你可以使用他们编写任意效果
M: 像镜面、体积光、阴影、折射现在能做到真正的实时渲染了
A: 的确是一个很振奋人心的消息,那么关于镜面可以省去很多文件吧,不再需要镜像复制了
A: 我觉得应该是建立一起个类似于HAnim动作库那样的效果脚本库将会更加有利于发展
M: 实时效果的范例在 DirectX 9、OpenGL、ATI、Nvidia 的开发库中有。
M: 另外他们也提供了一些着色效果的开发文件
A: 这样发展的话,其实我觉得我们可以把这些Shader当作为x3d文件所自带的插件了,呵呵
M: 实际上各个公司正在研究如果直接支持着色器的效果文件
M: 比如象 3ds max 6 中的直接支持 .fx (Direct 3D 9 特效 ) 文件那样
M: 直接或者间接支持其它 Direct 3D 9 开发工具输出的特效文件格式
M: 或者 Open GL 2.0 中支持的可编程着色器
A: 我想 其实换句话来说,各个播放器所需要的就是把来自于交笨重的算法交付给GPU,之后再拿回来。
A: 应该说,会越来越不再是采用软件渲染
M: 并不是之后再拿回来,而是直接显示到屏幕上
M: 并不通过 AGP 或 PCI - E 总线传回 CPU 或系统内存
A: 嗯,
A: 也就是
A: 在将vertex shader的脚本交付给地层之后,直接就显示到屏幕上
M: 所有的效果
M: 为实现效果所编写的着色程序或脚本都是直接在显卡的硬件中执行的
M: 如果通过软件模拟至少要从  AGP 或 PCI - E 总线上多传输多次
M: 将需要耗费大量的带宽
M: 也可以这么说,这些特效算法只有在可编程着色器出现之后才能更高效的运算

... ... ... ... ...

M: 先聊这么多吧,我把今天聊的这些编辑下放我网站上,呵呵
M: 明天来看我的网站
M: http://17de.com/x3d/
A: 好的,
A: 拜拜
A: 我先下了
M: bye

... ... ... ... ...

发表评论: http://www.86vr.com/forum/dispbbs.asp?boardID=3&RootID=345&ID=345