RenderMonkey学习记录2-RT

本文是RenderMonkey学习记录的第二部分,主要探讨在VS中屏幕坐标和纹理坐标之间的关系。通过面片将两张渲染的纹理合成,并作为Pass3的输入纹理,映射到屏幕。屏幕坐标顶点(-1,1,0)对应纹理坐标(0,1),转换公式为:纹理坐标X=1+屏幕坐标X,纹理坐标Y=1-屏幕坐标Y。Pass3使用前一阶段渲染的纹理。" 80463447,5738863,fastlane自动化打包:代码签名与项目配置详解,"['iOS开发', '自动化打包', 'fastlane工具', '证书管理', '项目配置']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RenderMonkey学习记录2-RT

配合食用链接
发现了《Shaders for Game Programmers and Artists》这本使用RenderMonkey的初学者入门书籍,搜索发现原来优快云上已经有大佬的教程了,就不重复写了,参考食用链接,配合代码,补全一些以下细节。

//VS
float4x4 matViewProjection;
float viewport_inv_width;
float viewport_inv_hight;
struct VS_INTPUT 
{
   float4 Position : POSITION0;
   float2 Texcor : TEXCOORD0;  
};
VS_OUTPUT vs_main( VS_INTPUT Input)
{
   VS_OUTPUT Output;
   Output.Position =float4 (Input.Position.xy,0,1);//输出位置
   Output.Texcor.x =0.5*(1+Output.Position.x-viewport_inv_width);
   Output.Texcor.y =0.5*(1+Output.Position.y-viewport_inv_width);
   return( Output ); 
}
//PS
sampler Texture0;
struct PS_INTPUT 
{
   float2 Texcor : TEXCOORD0;
};
float4 ps_main(PS_INTPUT Input) : COLOR0
{   
   float4 RenderTex= tex2D (Texture0,Input.Texcor);
   return  RenderTex;  
}

关于VS中屏幕坐标和纹理坐标的关系!

因为我们将使用面片作为屏幕的呈现,也就是说将前面两张渲染的纹理叠加成为一张A,而这张A将作为Pass3中面片的纹理,然后将这张面片移动到与屏幕一致。
如下图
在这里插入图片描述
在这里插入图片描述
屏幕像素坐标位于屏幕的顶点,
纹理像素坐标位于纹理的中心

屏幕坐标顶点左上角在(-1,1,0)
纹理坐标顶点左上角在(0,1)
首先将纹理坐标移动到屏幕坐标
纹理坐标X=1+屏幕坐标X;
纹理坐标Y=1-屏幕坐标Y;
然后对其像素,屏幕坐标XY缩小一半。

最后的built-in 变量viewport_inv_Width和viewport_inv_High可以用来适当地偏移纹理(也可不加,只是为了更好的在外部调节)

Output.Texcor.x =0.5*(1+Output.Position.x-viewport_inv_width);
Output.Texcor.y =0.5*(1-Output.Position.y-viewport_inv_width);

注意:
最后的Pass3使用的texture是render的texture
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值