X3D 程序化着色器

X3D Programmable Shaders

 

实时图形的发展的一个趋势就是提供硬件支持的程序化着色功能(programmable shading),以此支持更好的图形效果,并提供三维场景的真实感。高级程序化着色器就是这杨的硬件提供的处理方法。程序化着色器相对于传统配置的图形管线有这样一些优势:

为此建立了 X3D Programmable Shaders Working Group(程序化着色器工作组),以研究如何在在 X3D 结构框架中整合这样的高级程序化着色器。工作组根据要求制定了如下的目标:

现在工作组提供了一些实现方案的提议,提议方案基于以下的构想:

  1. 着色器(Shader)被处理为 Appearance(外观)属性,在场景图中的使用位置和使用 Material(材质)或 Texture(纹理)的位置相同;

  1. 着色器(Shader)的行为和 Script(脚本)类似, 在场景中有用户可定义的域,以及可绑定的用来执行着色的底层硬件着色器程序语言;

  1. 多个着色器可以用多通道/多次渲染的方式应用到单一对象上。

提议为此将建立新的 X3DShaderNode 节点类型 FragmentShader 和 VertexShader 以分别对应执行像素着色和顶点着色。这两个节点类型的界面定义是一样的,但将根据这两个渲染管线的特点来以不同的方式执行。最终将可能建议支持的以下的高级着色语言:

现有的高级着色语言

语言参考

OpenGL Shader Language (glsl)

http://www.3dlabs.com/support/developer/ogl2/index.htm

Microsoft High-Level Shader Language (HLSL)

http://msdn.microsoft.com

NVIDIA Cg Shader Language

http://developer.nvidia.com/page/cg_main.html

在可以抽象描述并具体表示程序化着色器管线的规格建立以后将建立一个包括相关节点定义的 Programmable Shaders Component(程序化着色器组件)规格。目前这个工作主要在 Mediamachine Flux 和 Xj3D 平台下进行研究和测试,并且可能会加入一些 Bitmanagement BS Contact 中使用的底层的渲染处理方式。和 X3D 中加入的多纹理相比,程序化着色组件将更紧密地和渲染管线的软硬件结构相关联,这样 X3D 中就可以更容易的引入新的图形软硬件带来的特效,例如 Direct3D 9、OpenGL 2.0 的特性也更容易以一种标准化的方式被引入到 X3D 中。目前 BS Contact 6.2 已经开始支持这个协议

参考文章:HLSL、Cg 及 RenderMonkey

http://www.gb.tomshardware.com/graphic/02q4/021015/index.html


编辑 http://17de.com/x3d/