http://www.cnblogs.com/Zephyroal/archive/2011/10/10/2206509.html

一天干掉一只Monkey计划(序)

一天干掉一只Monkey计划(序)

经过n久的焦头烂额,手头的工作终于开始轻松下来,想法很多,但出于兴趣第一,及将来对项目多做贡献的角度,决定目前最大的精力放在Shader效果上,辅之以C++深入的学习。

千里之行始于足下,要专心学习shader还是用RenderMonkey这样的工具,排除其他编程方面的干扰为佳,以前对此工具还略有入门,正好现在拿来开刀:

1,

首先记录下,网上一些关于renderMonkey的教程:

一步一步学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吧?)

一天干掉一只Monkey计划(序)【转】的更多相关文章

  1. 一天干掉一只Monkey计划(一)——基本光照模型及RT后处理 【转】

    http://www.cnblogs.com/Zephyroal/archive/2011/10/10/2206530.html 一天干掉一只Monkey计划(一)——基本光照模型及RT后处理 1, ...

  2. monkey工具使用(未完待续)

    monkey命令详解: 转自:http://blog.csdn.net/jlminghui/article/details/38238443 http://www.cnblogs.com/wfh198 ...

  3. Monkey学习(2)简单命令合集

    Monkey命令的简单帮助 执行所有命令的前提是,必须先链接模拟器或者实体机,否则会报如下错误信息: 打开命令行窗口,WIN+R,输入CMD 在命令行窗口执行:adb shell monkey –he ...

  4. 转——Android测试之monkey

    一.为什么要用Monkey 测试?   简单在说就是象猴子一样乱点,为了测试软件的稳定性,健壮性.号称最快速有效的方法.有时候运行相同系列的测试,即使是复杂的测试,但是以相同的顺序和路径,即使一遍又一 ...

  5. 为我所用之Monkey

    文章由来:有朋友问到Monkey的使用的问题,就整理一下Monkey的基本使用,以备后用查询. Monkey是一Android中的一个命令行工具,eclipse中有自带此工具,可以运行在模拟器以及真实 ...

  6. hdu 4358 Boring counting 离散化+dfs序+莫队算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358 题意:以1为根节点含有N(N <= 1e5)个结点的树,每个节点有一个权值(weight ...

  7. BZOJ3786星系探索——非旋转treap(平衡树动态维护dfs序)

    题目描述 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球没有依赖星球. ...

  8. WIN7使用过360系统急救箱后出现的任务计划程序文件夹删除的办法

    直接进主题(怀疑系统有问题用了下360系统急救箱,用完后发现计划任务多了个360superkiller文件夹,右键直接是删除不了的) 尝试了各种方法都是不爽,突然想到计划任务不是在在系统盘下的一个文件 ...

  9. [LeetCode] 1028. Recover a Tree From Preorder Traversal 从先序遍历还原二叉树

    We run a preorder depth first search on the rootof a binary tree. At each node in this traversal, we ...

随机推荐

  1. jetty bleed漏洞利用工具

    两个exp: https://github.com/AppSecConsulting/Pentest-Tools/blob/master/jetty-bleed.py https://github.c ...

  2. Launcher3自定义壁纸旋转后拉伸无法恢复

    MTK8382/8121平台. 描述:将自定义图片设置成壁纸后,横屏显示时,旋转为竖屏,图片由于分辨率过小,会拉伸:再旋转为横屏,拉伸不恢复. 这两天正在解这个问题,研究了很久,走了不少弯路,最后发现 ...

  3. C++实现高斯滤波器

    在matlab中,我们经常用到高斯滤波器,生成滤波器一般都是这样的函数psf =   fspecial('gauss', GaussSize, sigma),但是在vs2010中用到的高斯滤波器不能自 ...

  4. 3个js函数 变成数组本身的3个方法

    <!DOCTYPE html> 3个js函数 变成数组本身的3个方法 /** * 稀疏数组 变成不稀疏数组 * @params array arr 稀疏数组 * @return arry ...

  5. js向标签中添加文本或其他的简例

    1.如何用js 在div内插入内容? 不是改变内容,而是插入,就是在保留原内容的基础上,在尾部添加.举个例子. 元内容<div>你好</div> 插入后<div>你 ...

  6. python数据类型-----字符串

    今天来总结下python3.4版本字符串的一些操作方法,对这些方法先作一个简单的分类,按照分类来进行总结. Sequence Typessequence类型有六种:strings, byte sequ ...

  7. Ubuntu16.04 PPA方式安装JDK1.8

    一.删除OpenJDK:   sudo apt-get purge openjdk* 二.添加PPA: root@ubuntu:~# add-apt-repository ppa:webupd8tea ...

  8. Java 的初始化顺序

    初始化顺序: 1.将对象内存空间初始化为二进制0(所有的数据成员被设为默认值) 2.如果该类有基类则初始化其基类(调用默认基类构造器,也可在子类构造器中指定调用基类的某个构造器) 3. 静态成员和静态 ...

  9. Go嵌入类型及内部提升样例

    这个有点新鲜哟... package main import ( "fmt" ) type notifier interface { notify() } type user st ...

  10. go语言方法实例

    方便和函数的区别: 方法能给用户定义的类型添加新的行为.方法实际上也是函数,只是在声明时,在关键字func 和方法名之间增加了一个参数. package main import ( "fmt ...