> ch05-01
这是<<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的更多相关文章
- net 数据库连接详解 相当经典啊
ADO.NET与抽水的故事 ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供一 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 0042 MySQL学习笔记-入门--01
基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1
最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- 异步编程系列第01章 Async异步编程简介
p { display: block; margin: 3px 0 0 0; } --> 2016.10.11补充 三个月过去了,回头来看,我不得不承认这是一系列失败的翻译.过段时间,我将重新翻 ...
随机推荐
- Avito Cool Challenge 2018
考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...
- JavaScript权威指南1.概述
JavaScript: 1.面向对象.解释型(非编译型)的程序设计语言.一种脚本语言 2.松散类型语言.变量不必具有一个明确的类型.对象中的属性名可以映射为任意的属性值 3.原始数据类型:数字.字符串 ...
- Ambari安装指南
一.准备工作 l 基本工具 1) 安装epel,epel是一个提供高质量软件包的项目.先检查主机上是否安装: rpm -q epel-release 2) 如果没有安装,使用rpm命令安装: rpm ...
- HDU 1043 Eight(双向BFS+康托展开)
http://acm.hdu.edu.cn/showproblem.php?pid=1043 题意:给出一个八数码,求出到达指定状态的路径. 思路:路径寻找问题.在这道题里用到的知识点挺多的.第一次用 ...
- 【转】Windows Server 2008 R2怎样设置自动登陆
Windows Server 2008 R2是一款服务器操作系统,提升了虚拟化.系统管理弹性.网络存取方式,以及信息安全等领域的应用,Windows Server 2008 R2也是第一个只提供64位 ...
- GATK 一些资料
1. http://blog.sciencenet.cn/home.php?mod=space&uid=1469385&do=blog&classid=166694&v ...
- React Native 的组件之底部导航栏 TabBarIOS(一)
import React,{Component}from 'react'; import { AppRegistry, StyleSheet, Text, View, TabBarIOS, } fro ...
- hdu 4521 小明系列问题——小明序列 线段树+二分
小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Pro ...
- Qt5.3.2(VS2010)_调试_进入Qt源码
1.必须是 Debug模式 2. http://blog.csdn.net/mayenjoy/article/details/42535789 http://blog.csdn.net/goforwa ...
- Qt for Embedded Linux
1. Qt for Embedded Linux http://doc.qt.io/qt-5/embedded-linux.html 2. Installing Qt for Embedded Lin ...