|
|
最近在学习ShadowMap技术,希望在Dx8下面实现,不过例程都是Dx9的
依我的理解,需要先输出一张光源视角(LightView)的深度纹理(LightViewZTex),然后再从摄像机视角渲染场景,将渲染时每个Pixel转换到LightView视角与LightViewZTex的对应点比较,如果深度大于LightViewZBuf对应Pixel,则是阴影区。不知道这种理解是否正确?
我的问题是在Dx8中实现的问题,首先就是LightViewZBuf如何实现?因为Dx8没有HLSL,所以不能用DX9例程中的HLSL程序。
LPDIRECT3DTEXTURE8 LightViewZTex;
pDev->CreateTexture( ... D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, &LightViewZTex );
LPDIRECT3DSURFACE8 LightViewZSurf;
LightViewZTex->GetSurfaceLevel( 0, &LightViewZSurf );
然后
pDev->SetRenderTarget( LightViewZTex, ..... );
没有HLSL,我用VS/PS该如何得到每个像素的Z值呢?谢谢!
// vs
vs.1.1
m4x4 oPos, v0, c4
|
|