• 曾经流行的,即将流行的几种渲染模式(render pipeline)


    1,multi-light with single pass (farcry 1.2及之后的版本在ps3.0中使用这种方式,其实ps2.0也能使用这种方式)
      每个对象最多能计算3-4 (3灯光/ps 2.0, 4灯光/ps 3.0)个灯光,
    这样就限制了每个受光照的对象不能太大。
      适用于室外/地形场景 

    2,multi-pass  (DOOM3,farcry 1.2之前的版本使用这种方式)
     每light要渲染一个pass, 多light的情况下DP的次数会过高。
      适用于室内/三角形数量较少的场景


    3,deferred rendering (killzone2,stalker使用这种方式)
     G-Buffer点的显存大,耗的带宽高,DX9下不能实现MSAA(dx9下MRT不支持MSAA)
      材质受限制(因为是在后处理阶段计算光照,shader算法没办法针对不同的对象区分实现)

    4,light indexed deferred rendering
      DP次数比1,3高,比2低,显存带宽适中, 每个对象的shader中必须固定该对象的每个fragment计算的最大灯光数量.

    5,light pre-pass rendering (cryengine3使用这种方式,还有若干制作中的游戏/引擎使用这种方式)
      DP次数比1,3高,比2低,显存带宽适中,材质受限制
     (1) 渲染场景,输出depth和normal到一个rendertarget
      rendertarget的格式:R8G8B8A8,R8G8存depth,B8A8存normal.xy
                          R16G16B16A16,R16B16存depth,B16存normal.xy,A16存材质信息(specular power?)
      (2)使用第一个pass生成的depth和normal数据,渲染所有的灯光到light texture, RGB存计算后的光照值,
       A分量存每个象素的specular intensity
     (3)整个场景再渲染一次,使用(2)中生成的light texture,采样纹理(diffuse,specular mask...),计算光照。

  • 相关阅读:
    attempted to return null from a method with a primitive return type (Double).
    window7 虚拟机安装
    DB 与oracle 批量新增的写法
    oracle 修改表
    备份还原oracle数据库
    oracle数据库的字符集更改
    IMP-00013
    oracle创建用户授权权限
    java中添加定时任务
    程序在运行过程中变量的保存位置与生命周期
  • 原文地址:https://www.cnblogs.com/corefans/p/1491148.html
Copyright © 2020-2023  润新知