http://www.cnblogs.com/Zephyroal/archive/2011/10/10/2206509.html
一天干掉一只Monkey计划(序)
一天干掉一只Monkey计划(序)
经过n久的焦头烂额,手头的工作终于开始轻松下来,想法很多,但出于兴趣第一,及将来对项目多做贡献的角度,决定目前最大的精力放在Shader效果上,辅之以C++深入的学习。
千里之行始于足下,要专心学习shader还是用RenderMonkey这样的工具,排除其他编程方面的干扰为佳,以前对此工具还略有入门,正好现在拿来开刀:
1,
首先记录下,网上一些关于renderMonkey的教程:
http://blog.csdn.net/tianhai110/article/details/5668832
《RenderMonkey的基本使用方法》
http://www.cnblogs.com/mixiyou/archive/2009/10/05/1578208.html
《用RenderMonkey 进行shader开发(一)》
http://school.ogdev.net/ArticleShow.asp?id=5551&categoryid=5
《用RenderMonkey 进行shader开发(二)》
http://school.ogdev.net/ArticleShow.asp?id=5552&categoryid=5
renderMonkey官方网址(提供renderMonkey下载)
http://developer.amd.com/gpu/rendermonkey/Pages/default.aspx
RenderMonkey制作photoshop特效
http://www.qqread.com/soft-engineering/q372752_2.html
2,
还有鉴于RenderMonkey由于长时间的不更新,附上其藏在amd角落的位置:
http://developer.amd.com/archive/gpu/rendermonkey/pages/default.aspx
3,
万籁具备,只欠东风,现在最需要的就是订立一个详细的计划,目标是首先走一遍基本的光照模型,然后一天收集一个符合cool标准的shader效果,从原理到实际实现加以吸收,争取一天干掉一只猴子,为期一月,再行引擎改造大业。
4,Basic
这里就偷个懒,直接套用逍遥剑客的blog:
http://blog.csdn.net/xoyojank/article/details/1788982
RenderMokey是ATi发布的一个快速开发着色器程序和效果的工具.它解决了几个问题:
1. 着色器程序通常需要一个框架才能运行.这样的一个工具必须可以设置几何和纹理等信息而不用额外的代码
2. 传统的着色器程序开发时间消耗太大,而且需要高质量的代码做为依托.这就增加了开发难度,并限制了技术的共享
3. 着色器开发工具应该在程序员和美工之间建立一个桥梁,所以它不应该依赖任何API,也不应该需要太高的编程能力
4. 工具的框架应该要能够适应未来技术的发展
基于这些目标,ATi推出一个强大而且高效的开发工具:RenderMonkey,它大大降低了着色器程序开发的门槛,你只需要基本的图形学知识就可以使用它.
主界面
Workspace窗口 |
这里面包含很多不同类型的元素,可以分成4组: 1. 组元素,用来把元素组织成一个层次结构,如effect,pass等 2. 着色器或效果用到的参数,包括矩阵,向量,颜色等.它们可以用Artist编辑器来设定,我们会在后面提到 3. 着色器或效果的状态控制,包括着色器程序,硬件渲染状态,或顶点流映射 4. 着色器用到的资源,通常是网格和纹理 这些东西被保存到一个.RFX文件中,里面是XML格式的.这样可以用程序来方便地读取 |
效果预览窗口 |
从这里你可以看到着色器程序的最终效果.当然,你可以用鼠标来控制摄像机观察方式 |
输出窗口
如果在这里出现了错误信息,你可以像在VC中一样双击它,RenderMonkey会自动打开编辑器窗口,并把光标定位到相应的位置
编辑器窗口
它可以用来编辑ASM代码或HLSL,而且在编辑的同时状态栏还会给出相应的代码提示
Artist编辑器 |
这个窗口默认不显示,可以通过View->Artist Editor来调出来 在这里你可以设置各个参数元素,而且可以即时显示结果 |
下面看一下整个工程的组织形式
1. 库存变量,这里是View-Projection矩阵
2. 流映射,即这里的PNTT,应该是定义的VertexShader的顶点输入格式,双击可以打开编辑框
3. 效果组,它代表一个独立的Shader程序,你可以在一个工作空间中建立多个Shader
变量列表 纹理 模型 Pass 模型引用 渲染状态 VertexShader PixelShader 纹理信息(我想可能是Sampler吧?) |