游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2219|回复: 2

怎么将MAX中的一个灯光作为摄像机渲染场景?

[复制链接]

2

主题

9

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2011-6-22 18:32:00 | 显示全部楼层 |阅读模式
本人菜鸟,最近试着在max中写一个shadowmap的shader。知道基本原理,将一个灯光作为摄像机先对场景渲染深度缓存,然后再正常渲染,然后比较深度值。可是在试着写的时候实在不知道该怎么下手,我试着根据SAS文档中的描述将view矩阵与灯光绑定,可是不行,有知道的朋友能否帮忙提示一下吧:

string ParamID = "0x0001";//使用SAS进行编译
float4 lightpos : POSITION
<
        string UIName = "Lightpos";
        string Object = &quotointLight";
        string Space = "World";
        int refID = 1;
>;

float4x4 w : world;
float4x4 v : View<string Object = "PointLight";>;//这里试着将灯光与view矩阵绑定,不成功
float4x4 p : projection;

struct a2v
{
        float4 pos : POSITION;
};

struct v2f
{
        float4 pos : POSITION;
};


v2f vs(a2v In)
{
        v2f Out = (v2f)0;
        Out.pos=mul(In.pos,w);
        Out.pos=mul(Out.pos,v);
        Out.pos=mul(Out.pos,p);
        return Out;
}

float4 ps(v2f In) : COLOR
{       
        return float4 (0.8,0.5,0.5,1);//随便给个颜色值
}

technique test
{
        pass one
        {
                vertexshader = compile vs_2_0 vs();
                pixelshader = compile ps_2_0 ps();
        }
}

2

主题

9

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2011-6-23 09:26:00 | 显示全部楼层

Re:怎么将MAX中的一个灯光作为摄像机渲染场景?

up

10

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2011-6-23 14:41:00 | 显示全部楼层

Re: 怎么将MAX中的一个灯光作为摄像机渲染场景?

不大清楚你是没有渲染出阴影,还是说渲染出的阴影很怪异。前两天我刚看了一下ShadowMap的原理介绍,其中提到了ShadowMap的一个不足之处:
“这种方法只适合于灯类型是聚光灯(Spot light )的场合。如果灯类
型是点光源(Point light)的话,则在第一步中需要生成的不是一张深度纹理,
是一个立方深度纹理(cube texture)。如果灯类型是方向光(Directional light)
的话,,则产生深度图时需要使用平行投影坐标系下的worldViewProjMatrix 矩阵;”
——《GPU Programming And Cg Language Primer 1rd Edition》

希望这个能够帮到你~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 07:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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