我的材质系统---RenderScript的设计日记 (2005-8-08)
来源:互联网 发布:sql minus except 编辑:程序博客网 时间:2024/04/29 18:35
我的材质系统RenderScript的设计日记:
最近在思考怎么做一个灵活的渲染的控制系统,也就是说的材质系统,或者说Effect系统. 最近思考的可能也就这个了.准备把一些心得以日记的形式写出来.方便终结归纳. 其间各个时间出来的思路可能很不相同, 希望大家评价参考.但是不要起不同的日期的日记思路的完全不搭杠来攻击我.
2005-8-08
功能设计: 1: 提供渲染状态的管理,Shader的使用. 纹理的控制,多pass绘制(包括不连续的Pass绘制).
支持特定物体指定特效(glow , bloom , hdr等).
2: 脚本化,提供编辑器编辑,脚本编译后生成的可以整合到模型系统里去,模型系统里的材质
可以输出成脚本.经过重新编辑并重新应用到模型上.
3: 模型输出的材质中包含了:
(1) 纹理信息: 各层纹理的作用,各层纹理的参数(UV,Title等).
(2) 基本表面材质信息(漫反射,高光等)
需要编辑指定的参数.
(1) 渲染需要经过几个pass,有几种可选择的渲染方案
(2) 基本渲染状态.渲染的排序方式.
(3) 多pass渲染的时候,可能需要指定不同的material.需要给一个模型动态增加material信息
(4)
需求:简单.对美术来说简单.可以在材质编辑器里编辑,并导出成脚本和二进制模型
模型编辑器可以把材质编辑器的结果保存回模型里.模型系统解析这个材质后,会生成供渲染器用的材质.
如果模型系统检测到模型的材质不是材质编辑器生成的材质.则可以负责解释成一个基本材质.
模型编辑器可以把材质导出来后,调用材质编辑器来编辑导出的材质并进行修改.
所以要求材质编辑器可以嵌入到别的应用程序里。
美术修改完材质后,除非进行一些特殊的控制(强制半透明等效果)以外,渲染器不需要额外的信息,
就可以根据材质的信息来正确渲染这个模型.包括所有的特效和shader状态的自动设置等.
所有的shader应该共享.不同的渲染状态的物体该正确的自动排序.
Material不被共享.因为它包含了纹理,表面材质,Shader,渲染状态,渲染pass和渲染方式等.
其中被共享的是纹理,Shader和渲染状态.
渲染pass的渲染时间可以指定.可以指定一个pass是紧跟着前一个pass渲染还是单独渲染.
比如,一个卡通的勾边,渲染完本体后需要放大背面.这个时候,这个pass就要紧跟着前一个pass渲染.
渲染这种pass的时候,可以特殊处理.这种pass叫followed pass.可以只切换渲染状态.连vb/ib都不需要切换.
渲染效果上:
支持Multi-Pass的渲染.
支持影子的caster , reciver等效果.
支持Glow,HDR等需要分开的两个多Pass渲染.
支持Cartoon等NPR需要的渲染.
- 我的材质系统---RenderScript的设计日记 (2005-8-08)
- 我的材质系统---RenderScript的设计日记 (2005-8-11)
- 【D3DX日记】狭义材质与广义材质的区别
- 我的java日记(银行业务调度系统)
- 我的日记----IOS系统架构
- RenderScript的性能演进
- 3、RenderScript的介绍
- RenderScript的基础使用
- 关于Renderscript的理解
- 日记-记录我的日记
- 我的系统安全日记
- 我的日记
- 我的日记
- 我的学习日记!
- 我的情人节日记
- 我的日记
- 我的日记
- 我的工作日记
- 关于金属分类
- C语言编程易犯毛病集合
- 经过几番争论的结果
- [翻译]-WinCE 程序设计 (3rd 版)--1.3 第一个Windows CE程序
- 明天,去新疆
- 我的材质系统---RenderScript的设计日记 (2005-8-08)
- 我的材质系统---RenderScript的设计日记 (2005-8-11)
- 无欲则刚
- 夏天里的男孩(四)
- Armadillo v4.30 released
- 也说说长尾理论和二八法则
- 关于接口我的理解
- 腾讯七夕出情侣宠物蛋
- QQ宠物对症下药,立刻节约50元宝