游戏开发论坛

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

求教DirectX9 ShadowMap例子中的PCF问题

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-11-25 12:54:00 | 显示全部楼层 |阅读模式
DirectX9 ShadowMap中是用纹理图中的4个相邻点做过滤,代码为:
sourcevals[0] = (tex2D( g_samShadow, ShadowTexC ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;  
        sourcevals[1] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 0) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;  
        sourcevals[2] = (tex2D( g_samShadow, ShadowTexC + float2(0, 1.0/SMAP_SIZE) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;  
        sourcevals[3] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE) ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w)? 0.0f: 1.0f;  

而PCF一般是用8个相邻点过滤:float2(1.0/SMAP_SIZE, 0),float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE),
float2(1.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(0,1.0/SMAP_SIZE),float2(0, -1.0/SMAP_SIZE),
float2(-1.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(-1.0/SMAP_SIZE, 1.0/SMAP_SIZE),float2(-1.0/SMAP_SIZE, 0)
这样改也是可以运行的。

然后我就想用25个相邻点试试,但总报HLSL出错,没法编译。

1   2   3   4   5
6   7   8   9   10
11  12  0   13  14
15  16  17  18  19
20  21  22  23  24

float2(1.0/SMAP_SIZE, 0),float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE),
float2(1.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(0,1.0/SMAP_SIZE),float2(0, -1.0/SMAP_SIZE),
float2(-1.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(-1.0/SMAP_SIZE, 1.0/SMAP_SIZE),float2(-1.0/SMAP_SIZE, 0)

上面这些点的可以运行,但是增加下面的像素偏移就会出错(哪怕只增加一个)。我在想是不是2位的偏移量不是2.0/SMAP_SIZE这种形式,不知道应该如何设置上面排列中的外围位置点的偏移,还是由其他问题导致,谢谢。

float2(2.0/SMAP_SIZE, 0),float2(2.0/SMAP_SIZE, 1.0/SMAP_SIZE),float2(2.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(2.0/SMAP_SIZE, 2.0/SMAP_SIZE),float2(2.0/SMAP_SIZE, -2.0/SMAP_SIZE),

float2(-2.0/SMAP_SIZE, 0),float2(-2.0/SMAP_SIZE, 1.0/SMAP_SIZE),float2(-2.0/SMAP_SIZE, -1.0/SMAP_SIZE),float2(-2.0/SMAP_SIZE, 2.0/SMAP_SIZE),float2(-2.0/SMAP_SIZE, -2.0/SMAP_SIZE),
......






2

主题

31

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2011-11-27 10:47:00 | 显示全部楼层

Re:求教DirectX9 ShadowMap例子中的PCF问题

sourcevals数组越界了吧,忘了改?
-2.0/SMAP_SIZE 不会出错的。

3

主题

19

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2011-11-29 23:33:00 | 显示全部楼层

Re:求教DirectX9 ShadowMap例子中的PCF问题

看下是报什么错?指令数太多了?用PS3.0没?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 06:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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