游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1502|回复: 1

关于光栅化和插值的疑问

[复制链接]

8

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2009-7-4 14:45:00 | 显示全部楼层 |阅读模式
vertex shader 和 pixel shader之间的光栅化和插值的原理是什么?

如per-pixel lighting shader:

struct VS_INPUT
{
        float3 pos : POSITION;
        float3 normal : NORMAL;
};

struct VS_OUTPUT
{
        float4 pos : POSITION;
        float3 worldPos : TEXCOORD0;
        float3 normal : TEXCOORD1;
};

VS_OUTPUT my_vs(VS_INPUT vert)
{
        VS_OUTPUT vsout;
       
        vsout.pos = mul(float4(vert.pos,1),matWorldViewPrj);
        vsout.worldPos = mul(float4(vert.pos,1),matWorld);
        vsout.normal = normalize(mul(vert.normal, matWorld));
       
        return vsout;
}

//--
float4 my_ps(float3 worldPos : TEXCOORD0,
                         float3 normal : TEXCOORD1) : COLOR
{
        float4 color;
       
        //-- ambient
        color = mtlDiffuseColor*0.2f;
       
        //-- diffuse
        normal = normalize(normal);
       
        float3 L = lightPos - worldPos;
        float d = length(L);
        L /= d; // normalize L
       
        float atten = 1/(lightAttenuation*d);
        float diff = saturate(dot(normal, L));
       
        color += mtlDiffuseColor * diff * atten;
       
        //-- specular
        float3 V = normalize(worldPos - eyePos);
        float3 R = reflect(L,normal);
       
        float specular = pow(saturate(dot(R,V)),8)*diff*atten;
        color += float4(specular,specular,specular,0);
       
        return color;
}

vertex shader里经常将一些顶点的附加信息用纹理坐标输出,如顶点在世界空间的坐标、顶点到灯光向量、顶点的深度值等等,
这些值是如何被光栅化和插值的呢?
谢谢!

11

主题

650

帖子

651

积分

高级会员

Rank: 4

积分
651
发表于 2009-7-4 15:16:00 | 显示全部楼层

Re:关于光栅化和插值的疑问

道之内,啊不,光栅化,这个解释起来相当麻烦,总之就是光栅化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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