zoukankan      html  css  js  c++  java
  • ogre3D学习基础7---材质详解

    物体着色的基础 --- 四种不同光照作用

      1、环境反射

      近似的模拟了场景中的全局辐射,也就是用来近似模拟所有光在场景中不断散射的结果。材质中有相应的属性来代表这种环境反射颜色。

      2、漫反射

      这种颜色是接收到直接从光源发射的光之后产生的,“漫反射”和现实中的意思一样,就是描述光被物体反射到多个方向的效果。

      3、放射

      指的是自发光物体所拥有的颜色。具体意思就是放射光只能照亮自己却不能对周围任何物体产生影响。这种光很奇怪的,现实中没有的。

      4、镜面反射

      描述了物体对被光照后的“高光”效果。这个也比较抽象。

    纹理贴图(Texture Mapping)

      可以用程序把纹理通过一个独立的坐标系映射到一个物体上。

    可编程着色技术(Programmable Shading

      Ogre支持所有风格的GPU着色语言,其中包括低级的汇编和诸如CgGLSLHLSL这种高级语言。

    批次(Batching

       Ogre最基本的渲染单元被称为可渲染对象(Renderable),它们通过不同的渲染状态被分类传递到渲染队列中去。而一次渲染状态的改变就是一个批次

    材质克隆

     Ogre中材质是被所有引用所共享的。所以同一时刻可能有多个指针指向同一个材质,如果每个指针都有状态变化,那只能自己克隆一份材质,单独处理。

    GPU着色

      GPU(图形处理器)在设计之初就有着明确的目标,提供高性能的并行向量计算以供针对3D图形处理使用。GPU的存在是为了减少CPU(中央处理器)的工作压力,使用者负责分配具体的计算工作给它们。因此,需要有计划再在设计中的管线加入可编程着色技术,尤其是当将要计划使用实时阴影技术或者更高级的渲染到纹理(Render-to-Texture)技术的时候更需要这方面的支援。

     

    材质的例子

      最简单的Ogre材质可定义如下:

     1 material VerySimple//材质
     2 {
     3    technique//技术
     4     {
     5       pass//通道
     6       {
     7         diffuse 0.5 0.5 0.5    //
     8       }
     9     }
    10 }     

      当然也可以加上纹理贴图:

    material Examples/EnvMappedRustySteel
    {
        technique//技术
        {
           pass
           {
             texture_unit Diffuse//纹理贴图1
             {
               texture RustySteel.jpg//纹理图片
         }
    
         texture_unit Environment//纹理贴图2
         {
               texture spheremap.png//纹理图片
               colour_op_ex add src_texture src_current
               colour_op_multipass_fallback one one
               env_map spherical
         }  
        }
      }
    } 

    纹理覆盖(Texture Aliases

      在很多情况下,派生材质的目的可能只是需要改变已有脚本中的纹理图片。这时候可以通过简单的纹理覆盖机制来实现。代码实现如下:

    1 material Examples/EnvMappedCompressedRustySteel : Examples/EnvMappedRustySteel
    2 {
    3          set_texture_alias Diffuse rustySteel.dds //
    4          set_texture_alias Environment aphereMap.dds//
    5 }
  • 相关阅读:
    .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)(转)
    反射奥秘
    ubuntu 安装chmsee
    ubuntu安装sublime,新立得
    Ubuntu 升级VisualBox后无法启动 Kernel driver not installed
    ubuntu安装stardict并导入词典
    PHP运行模式
    Ubuntu ibus输入法图标消失的解决办法
    MySQL 获得当前日期时间(以及时间的转换)
    mysql索引之or条件
  • 原文地址:https://www.cnblogs.com/songliquan/p/3294664.html
Copyright © 2011-2022 走看看