/** @file PerEntityShadowGenerator.h
@brief 使用 MOUT Demo 中 Shadow Geometry 为每个物件生成 Projection Shadow
* Copyright (c) 2008,第九城市游戏研发中心
* All rights reserved.
*
* 当前版本:
* 作 者:Shi Yazheng
* 完成日期:2008-05-08
*
* 取代版本:
* 作 者:
* 完成日期:
*/
#pragma once
#include
#include "terrain.h"
#ifndef CODE_INGAME
#include "ShadowGeometry.h"
namespace SceneCore
{
class MAIN_ENTRY CPerEntityShadowGenerator
{
public:
CPerEntityShadowGenerator(CTerrain* pkTerrain);
~CPerEntityShadowGenerator(void);
/// 添加阴影投射物体
void AddShadowCaster(NiEntityInterface* pkEntity);
///
/**
*
功能说明:创建 iChunkID 的投影阴影,并且写入 chunk 的 blend texture的 alpha 通道
*
可访问性:public
*
注 释:
* @param kLitDir[in] 光照方向
* @param fMaxShadowValue[in] 最大阴影深度 [0~1]
* @param fBlur 模糊程度
* @return 无
*/
void CastProjectionShadow(CTerrain* pkTerrain, NiPoint3 kLitDir, float fMaxShadowValue, float fBlur);
CTerrain* GetTargetTerrain() {return m_pkTerrain;}
protected:
// 对 pkTexture 进行 U/V 方向的模糊
void _BlurTexture(NiRenderedTexture* pkTexture, float fBlur);
list *m_aEntityList; // 场景所有物件列表,按照 chunk 分别存放
CTerrain* m_pkTerrain; // 目标地形
};
};
#endif