游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2244|回复: 5

使用纹理坐标变换矩阵是否会降低速度?

[复制链接]

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-5-19 19:13:00 | 显示全部楼层 |阅读模式
如果这样写像素着色器来实现纹理坐标变换矩阵的话:

每个采样坐标都乘上变换矩阵, 这样会不会变得很慢啊?

// 纹理变换矩阵
float4x4 g_matTextureTransform;

// 纹理采样器
sampler TextureSampler;

// 顶点着色器输出结构
struct VS_OUTPUT
{
        float4 Pos        : POSITION;
        float4 Diffuse        : COLOR0;
        float2 TexUV        : TEXCOORD0;
};

// 像素着色器
float4 PSMain(VS_OUTPUT In) : COLOR
{
        // 采样像素与漫射颜色混合
        return tex2D(TextureSampler, mul(float4(In.TexUV, 1.0f, 1.0f), g_matTextureTransform).xy) * In.Diffuse;
}


45

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2009-5-19 22:47:00 | 显示全部楼层

Re:使用纹理坐标变换矩阵是否会降低速度?

会,因为PixelShader是对每个象素进行处理,所以会很慢

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-5-20 09:16:00 | 显示全部楼层

Re: 使用纹理坐标变换矩阵是否会降低速度?

在vs上计算一样的,可以试试,这样可以减少ps计算量

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-5-20 09:30:00 | 显示全部楼层

Re:使用纹理坐标变换矩阵是否会降低速度?

把计算搬到vs里
纹理矩阵用float3*3就可以,mul的时候可以节约一条指令

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
 楼主| 发表于 2009-5-20 12:27:00 | 显示全部楼层

Re:使用纹理坐标变换矩阵是否会降低速度?

float3*3矩阵 只包含了旋转/缩放信息, 这样不是就无法平移了么?

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-5-20 18:16:00 | 显示全部楼层

Re:使用纹理坐标变换矩阵是否会降低速度?

对于2维的点(x,y),3*3矩阵已经包含了旋转,缩放,平移
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 07:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表