我的材质系统---RenderScript的设计日记 (2005-8-11)

RenderScript的设计笔记:

2005-8-11:
     1: RenderScript为一系列的渲染指令.用来指示渲染器如何来渲染物体,
       也可以理解为RenderScript如何调用渲染器的渲染接口
     2: 物体本身包含了以下的信息,就是渲染器和RenderScript使用的数据.
        (1): surface material ,其中包含了 TextureLayer + D3D/OpenGL material.
           在模型系统里。这些参数可以从MAX里导出来.并可以在编辑器里编辑.
        (2):  shader.系统里有许多预先写好的Shader.
        (3):  render state. RenderState主要用来控制物体的渲染状态.其中包含了渲染的排序.
           也许我们需要对每个pass设置物体的渲染状态.
           
     综上: 渲染器的RenderScript有两种设计方案.一种是把renderscript当作一个.fx来写.
        这样的话,RenderScript其实就是一个数据,一个配置文件.Renderer根据这个配置文件来解析.
           同时,我们还需要做一个脚本来控制渲染器有多少个渲染队列。
           这样渲染器就可以在修改很少的代码的甚至不修改情况下,支持渲染glow hdr等post render effect

           另外的一种就是把渲染器的基本功能设计好,在Renderscript里以指令的形式调用Renderer的功能。
           这样RenderScript就真的是一种语言,一种Very High Shading Language.

    下面展示第一种方案的两个演示配置文件
   
   
    渲染器的配置
    <RendererCfg
   
       <Queues  //这里展示了有多少个渲染队列
          < Queue  type = main  , tip =  def  //每个渲染队列的用途
            RenderTarget = Def_RenderTarget
          >
          < Queue  type = after , tip = glow
            Rendertarget = <0.5 , 0.5>Def_RenderTarget
          >
       >

       <RendererScript  //这里的数据控制如何
       >
    >


  渲染脚本
     begin RenderScript <name = "卡通">
     {
         begin tech <name = High>
         {
              begin pass 0 <render=now>
              {
                 surface_material = DEF_Material
                 render_state  = "单面物体"
                 vertex_buf    = Position/Normal/Tangent/Texturex2
                 vertex_shader        = "ppl_cartoon.vs"
                 pixel_shader         = "ppl_cartoon.ps"
              }

              begin pass 1 <render=follow> //follow的意思是跟着前面的pass渲染
              {
                 render_state  = "放大背面"
                 vertex_shader        = "extrude_back_face.vs"
                 pixel_shader         = "extrude_back_face.ps"
              }
             
              begin pass 2 <render=after, tip = glow> //after的意思是表示这个pass要在所有的
              {
                  render_state = "单面物体"
              }
             
         }end tech
     }end RenderScript

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值