这是<<shaders for game programmers and artists>> 第五章中第一个shader例子--RTT。。一直没弄出结果,今天记下来,主要是操作步骤,详细情况可以看该书

RTT主要是将场景绘制到一个临时纹理对象上,这个临时纹理对象被成为render target

使用的例子是ch05中的shader_1.rfx

1.打开workspace,右击Effect node 添加一个新的render target  :右击---Add Texture---Add renderable texture

这里添加一个 renderTexture,类似于添加一个新的纹理,但又不同:它不是从文件读取,而且是由rendermonkey自动管理的

2.双击这个添加的render Texture ,勾上 use view port dimensions

3.现在有了一个render texture ,你需要告诉rendermonkey 去使用它:

给每个Pass 添加一个render target:右击Pass---Add render target----选择你刚才新建的哪个render texture的名称

4.双击第一个pass添加的render target,   跳出的对话框中勾上 enable color clear 和enable depth clear

双击第二个pass添加的render target,   跳出的对话框中取消 enable color clear 和enable depth clear

因为第一个绘制时候需要清空颜色和深度缓存,而第二个pass中需要接收第一个pass产生的像素,第二个不要清空

5.现在屏幕是黑屏,因为你把object都绘制到了rendertarget上,(你可以右击一个renderTarget ,选择render to screen就能看到刚才绘制的object  )

现在需要绘制一个四边形,来接收render target上绘制的object   , 这里有一个纹理坐标误差,原因请看书上,该误差为纹理坐标系中(1/width, 1/height)

6.给Effect添加一个model: screenAlighedQuad.3ds

7.添加一个pass来绘制这个quad , 将pass 中model 节点指向screenAlighedQuad.3ds

8.set up the stream mapping reference to use the coommon stream mapping node

9.创建一个 texture object ,它用来将接收render target纹理,然后将该texture object贴图到screenAlighedQuad.3ds上

10.添加两个内置变量 viewport_inv_width和 viewport_inv_heith ,分别关联到语义:ViewportWidthInverse和 ViewportHeightInverse

这两个变量用来进行纹理坐标偏移。

11修改shader code,注意vertex  shader中的纹理坐标设置 对绘制结果有很大的影响。

到这里发现前面没有出现绘制结果的原因了:

1.screenAlighedQuad.3ds模型绘制时候的视角问题,默认情况下,看到的不是 quad的正面,而是它的侧面,(假如面有厚度的话,看到的是一条线,但是没有厚度,所以什么也看不到),这里需要注意面模型绘制到屏幕上时候的坐标。书中out position =float4(in.xy, 0, 1),1.82版本应该为out position =float4(in.yx,
0, 1),难以理解到底是什么原因..版本问题?模型问题?。。

我擦,不是上面说的原因,找到真正原因了,是CULL MODE的问题,把screenAlighedQuad.3ds这个pass的CULL MODE改为none,两面都绘制,就不用position =float4(in.yx, 0, 1)。。应该是1.5到1.82版本时,CULL的默认值被改了。。。

2.vertex shader中将该quad绘制到屏幕时候,不需要进行试图矩阵变换,因为是将该quad完整的平铺到屏幕上,这里没注意

3.注意render Target的属性,双击它保证第一个pass的depth buffer和color buffer被clear , 而第二个pass需要接收第一个pass的depth和color所以不需要被clear.!切记!!!


> ch05-01的更多相关文章

  1. net 数据库连接详解 相当经典啊

    ADO.NET与抽水的故事 ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供一 ...

  2. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  3. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  4. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  5. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  6. 0042 MySQL学习笔记-入门--01

    基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...

  7. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  8. ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1

    最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...

  9. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  10. 异步编程系列第01章 Async异步编程简介

    p { display: block; margin: 3px 0 0 0; } --> 2016.10.11补充 三个月过去了,回头来看,我不得不承认这是一系列失败的翻译.过段时间,我将重新翻 ...

随机推荐

  1. Avito Cool Challenge 2018

    考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...

  2. JavaScript权威指南1.概述

    JavaScript: 1.面向对象.解释型(非编译型)的程序设计语言.一种脚本语言 2.松散类型语言.变量不必具有一个明确的类型.对象中的属性名可以映射为任意的属性值 3.原始数据类型:数字.字符串 ...

  3. Ambari安装指南

    一.准备工作 l 基本工具 1) 安装epel,epel是一个提供高质量软件包的项目.先检查主机上是否安装: rpm -q epel-release 2) 如果没有安装,使用rpm命令安装: rpm ...

  4. HDU 1043 Eight(双向BFS+康托展开)

    http://acm.hdu.edu.cn/showproblem.php?pid=1043 题意:给出一个八数码,求出到达指定状态的路径. 思路:路径寻找问题.在这道题里用到的知识点挺多的.第一次用 ...

  5. 【转】Windows Server 2008 R2怎样设置自动登陆

    Windows Server 2008 R2是一款服务器操作系统,提升了虚拟化.系统管理弹性.网络存取方式,以及信息安全等领域的应用,Windows Server 2008 R2也是第一个只提供64位 ...

  6. GATK 一些资料

    1. http://blog.sciencenet.cn/home.php?mod=space&uid=1469385&do=blog&classid=166694&v ...

  7. React Native 的组件之底部导航栏 TabBarIOS(一)

    import React,{Component}from 'react'; import { AppRegistry, StyleSheet, Text, View, TabBarIOS, } fro ...

  8. hdu 4521 小明系列问题——小明序列 线段树+二分

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Pro ...

  9. Qt5.3.2(VS2010)_调试_进入Qt源码

    1.必须是 Debug模式 2. http://blog.csdn.net/mayenjoy/article/details/42535789 http://blog.csdn.net/goforwa ...

  10. Qt for Embedded Linux

    1. Qt for Embedded Linux http://doc.qt.io/qt-5/embedded-linux.html 2. Installing Qt for Embedded Lin ...