游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2508|回复: 0

OGRE例子里Demo_DeferredShading的问题?

[复制链接]

18

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
QQ
发表于 2009-5-22 15:10:00 | 显示全部楼层 |阅读模式
       请问下Demo_DeferredShading里,如果模型的材质脚本设置了多层纹理tex_coord_set  1,该材质继承deferred.material里 DeferredShading/Material/TexturedNormalMapped材质,实现了DeferredShading效果,但继承DeferredShading/Material/TexturedNormalMapped里的片段程序DeferredShading/material/nm_ps将子材质进行了修改,子材质tex_coord_set  1被改变了,使子材质拉伸一样,请问如何保持原子材质的tex_coord_set  1属性?
//父材质 需实现DeferredShading的材质
material DeferredShading/Material/TexturedNormalMapped
{
        technique default
        {
                pass main
                {
                        vertex_program_ref DeferredShading/material/nm_vs
                        {

                        }
                                //将继承它的子材质tex_coord_set失效?????
                        fragment_program_ref DeferredShading/material/nm_ps
                        {

                        }
                        texture_unit
                        {

                        }
                        texture_unit
                        {
                                tex_coord_set 2
                        }
                }
        }
}

对继承它的子材质进行了片段修改,使tex_coord_set失效?
///DeferredShading/material/nm_ps hlsl
/** Deferred shading framework
        // W.J. :wumpus: van der Laan 2005 //
       
        Material shader: Textured normal mapped
*/
sampler Tex0: register(s0);
sampler Tex1: register(s1);

struct OUTPUT
{
        float4 color0 : COLOR0; // Diffuse color + ?
        float4 color1 : COLOR1; // Normal + depth
};

float specularity;

OUTPUT main(
        float3 normal: TEXCOORD0,
        float4 texCoord0: TEXCOORD1,
        float depth: TEXCOORD2,
        float3 tangent: TEXCOORD3,
        float3 binormal: TEXCOORD4
)
{
        OUTPUT output;
        // Frame for normal mapping
        float3x3 rotation = float3x3(tangent, binormal, normal);
        float3 texnormal = (tex2D(Tex1, texCoord0)-0.5)*2;
       
        output.color0.rgb = tex2D(Tex0, texCoord0);
        output.color0.a = specularity;
        output.color1.xyz = normalize(mul(texnormal,rotation)); // Do normalisation here, saves an   operation per light
        output.color1.w = depth;
       
        return output;
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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