`
tuo_ba_ye
  • 浏览: 5424 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ogre 着色器

 
阅读更多
先说一句,所谓着色器,就是指那些在渲染时,可以为显卡加载的程序。类似于脚本吧。

书接上回

渲染的第一步是,顶点坐标从local space 转换到 camera space,这里就引出第一种着色器。vertex shaders。其实,vertex shader能控制这个变换过程。
eg
 vertex_program MyVertexShader1 cg      //vertex_program为关键字,表示顶点着色器。 MyVertexShader1 shader名字。 cg 关键字 表明shader使用cg语言
 {
	source myShaders.cg            //定义着色器的脚本文件
	entry_point MyVertexShader1    //shader的名字,与脚本中的那个函数名一致
	profiles vs_1_1 arbvp1         //shader的版本号        
 

	default_params   //定义了一个被Ogre 3D自动传给着色器的参数                 
	{        
		param_named_auto worldViewMatrix worldviewproj_matrix    
              //关键字worldviewproj_matrix.这个关键字告诉Ogre 3D我们想要我们的参数拥有WorldViewProjection矩阵的值。
///局部空间的坐标乘以这个矩阵的,得到的坐标就是摄像机空间的顶点坐标。
    
	}
 }

渲染的第二、三步是,光栅化和贴图,这里可以加载第二种着色器,fragment shader ,这个着色器,可以控制贴图坐标,映射到模型的坐标。
fragment_program MyFragmentShader1 cg  
{
	source myShaders.cg    //参数含义同上
	entry_point MyFragmentShader1   
	profiles ps_1_1  arbfp1
}


myShaders.文件如下:

void MyFragmentShader1(out float4 color: COLOR)
{
	color = float4(0,0,1,0);
}
void MyVertexShader1(
        float4 position        : POSITION, // 由ogre传给此着色器的参数 worldViewMatrix ,即局部空间的位置    
        out float4 oPosition    : POSITION, //变换完之后的位置,即摄像机空间的位置     
        uniform float4x4 worldViewMatrix)//此参数拥有WorldViewProjection矩阵的值
{
	oPosition = mul(worldViewMatrix, position);//完成从局部坐标到摄像机坐标的映射,即局部坐标 mul WorldViewProjection矩阵 = 摄像机空间坐标。mul 矩阵相乘
}

分享到:
评论

相关推荐

    在OGRE中使用HLSL.txt

    OGRE中的HLSL着色器通常由两部分组成:顶点着色器(Vertex Shader)和片段着色器(Pixel Shader/Fragment Shader)。顶点着色器负责处理场景中的几何顶点数据,而片段着色器则用于计算像素的颜色值。 #### 四、示例:...

    ogre材质编辑器OgreMaterialEditor

    1. 创建材质:通过选择不同的着色器、设置纹理贴图、调整光照参数等,创建全新的材质类型。这些材质可以应用于模型表面,改变其在场景中的视觉表现。 2. 编辑材质:对于已经存在的材质,编辑器提供了一个直观的界面...

    基于Ogre的场景编辑器OgreSE源代码+示例

    3. **丰富的材质系统**:支持自定义纹理、光照、着色器,允许创建复杂的视觉效果。 4. **多通道渲染**:支持多个视口和渲染目标,如多重显示器或屏幕分割。 5. **插件架构**:通过插件机制,可以轻松扩展功能,如...

    ogre中的材质脚本_ogre中的材质脚本_Ogre_

    5. **着色器(Shader)**:Ogre支持GLSL、HLSL等多种着色语言,开发者可以通过材质脚本指定自定义的顶点和片段着色器,以实现复杂的光照模型和视觉效果。 6. **纹理(Texture)**:在Ogre中,纹理是用于表面贴图的...

    Ogre 引擎 源码分析

    它提供了对顶点着色器和像素着色器的支持,允许开发者编写自定义的图形效果。理解硬件加速原理,能让我们更好地利用现代显卡的功能,实现高性能的3D图形渲染。 6. **插件系统**:Ogre的插件系统允许开发者扩展其...

    Ogre与OSG的简单比较

    - **OSG**:虽然没有像Ogre那样专门的材质声明语言,但OSG同样支持各种着色器技术和复杂的材质管理。 ##### 3.4 场景树管理 - **Ogre**:支持多级场景组织体系,并且场景节点可以带动附属物体一起运动,实现类似...

    OGRE教程 OGRE 入门教程

    - **效率特性**:OGRE采用先进的技术优化图形渲染性能,例如延迟光照计算、硬件顶点着色等。 - **平台和3D API支持**:OGRE支持多种操作系统(如Windows、Linux)以及不同的3D图形API(如OpenGL、DirectX)。 - **...

    Ogre游戏程序 源码

    6. **硬件加速**:Ogre充分利用现代GPU的能力,提供高效的图形渲染,包括顶点着色器、像素着色器等高级特性。 通过深入阅读和分析`AITest`的源代码,我们可以学习到如何利用Ogre实现游戏AI,包括寻路算法、智能体...

    ogre-1.12.11.zip

    1. 渲染系统:Ogre提供了一个多层次的渲染架构,包括场景管理、相机控制、光照处理、纹理贴图、着色器系统等。这些模块允许开发者创建复杂的3D场景,实现高级视觉效果。 2. 资源管理:Ogre有一套完善的资源管理系统...

    [OGRE3D].rar_OGRE3d openGL_Ogre_ Ogre_ogre_ogre3d

    OGRE 提供了一个完善的资源管理系统,允许开发者有效地加载、管理和卸载各种类型的资源,包括纹理、模型、动画、着色器等。资源可以通过URL定位,支持文件系统、数据库或网络等多种存储方式。 2. **资源加载**: ...

    ogre1.7教程及源码

    4. **高级渲染技术**:包括硬件着色器支持、动态阴影、体积雾、粒子系统等,这些功能可以实现复杂而真实的视觉效果。 5. **场景管理**:Ogre1.7的Scene Manager允许开发者以树状结构组织场景,便于管理和操作3D对象...

    ogre 编程书籍 Ogre 3d 1.7 beginner's Guide - 2010 源代码

    5. **渲染基础**:理解如何创建和控制渲染窗口,设置渲染参数,以及如何使用材质和着色器来影响物体的外观。 6. **3D对象**:学习如何加载3D模型,创建基本几何形状,以及如何添加和操纵这些对象。 7. **光照与...

    OGRE引擎介绍,基础知识

    6. **材质与着色器**:OGRE允许自定义复杂的着色器,通过Shader Language(如GLSL或HLSL)实现高度定制的视觉效果。 7. **粒子系统**:内置的粒子系统可以创建各种动态效果,如火、烟雾、火花等,同时支持自定义...

    Ogre渲染流程,游戏编程用

    Ogre的材质系统允许开发者自定义复杂的着色器,实现丰富的视觉效果。纹理则是材质的重要组成部分,为物体表面添加细节和真实感。 5. 光照系统 光照是影响3D场景视觉效果的关键因素。Ogre支持多种类型的光源,如点...

    ogre学习系列源码-1

    此外,你还会接触到Ogre的渲染管线,包括设置视口、创建渲染窗口、管理材质和着色器。Ogre支持OpenGL和Direct3D等多种渲染API,所以你可能需要理解这些API的基本概念,尽管Ogre已经做了抽象层,使得开发者不必直接与...

    ogre比较全的资料

    10. **性能优化**:学习如何利用Ogre的特性进行性能优化,例如批处理渲染、延迟着色、LOD(细节层次)技术等,将提升你的3D应用在不同硬件上的表现。 总之,这个“ogre比较全的资料”压缩包可能包含了Ogre的基础...

    OGRE3D从新手到入门.rar

    - 材质和着色器:深入学习材质系统,包括贴图、着色器语言(如HLSL、GLSL)及自定义效果。 - 动画系统:理解骨骼动画和关键帧动画,以及如何应用到3D模型上。 - 效果和粒子系统:创建动态效果如火、烟雾、爆炸等...

Global site tag (gtag.js) - Google Analytics