root/cafu/trunk/CaSHL/CaSHLWorld.hpp

Revision 457, 2.7 KB (checked in by Carsten, 4 months ago)

Using UltraEdit's multi-line search-and-replace-in-files feature, replaced


^#ifndef _(CAFU|CF|CFS|CA)_(.*)_$
^#define _\1_\2_$

with

#ifndef CAFU_\2_INCLUDED
#define CAFU_\2_INCLUDED

and


^#ifndef _(.*)_HPP_$
^#define _\1_HPP_$

with

#ifndef CAFU_\1_HPP_INCLUDED
#define CAFU_\1_HPP_INCLUDED

Closes #91.

Line 
1/*
2=================================================================================
3This file is part of Cafu, the open-source game engine and graphics engine
4for multiplayer, cross-platform, real-time 3D action.
5Copyright (C) 2002-2012 Carsten Fuchs Software.
6
7Cafu is free software: you can redistribute it and/or modify it under the terms
8of the GNU General Public License as published by the Free Software Foundation,
9either version 3 of the License, or (at your option) any later version.
10
11Cafu is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13PURPOSE. See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with Cafu. If not, see <http://www.gnu.org/licenses/>.
17
18For support and more information about Cafu, visit us at <http://www.cafu.de>.
19=================================================================================
20*/
21
22/****************************/
23/*** CaSHL World (Header) ***/
24/****************************/
25
26#ifndef CAFU_CASHLWORLD_HPP_INCLUDED
27#define CAFU_CASHLWORLD_HPP_INCLUDED
28
29#include "../Common/World.hpp"
30
31
32// This switch controls the usage of normal-maps for SHL patches.
33// Using normal-maps with SHL patches may or may not help, as explained in the appropriate code comments.
34#define USE_NORMALMAPS 1
35
36
37struct PatchT
38{
39    ArrayT<double> SHCoeffs_UnradiatedTransfer; // SH coefficients of the transfer function that is not yet "radiated" / "shot" into the environment.
40    ArrayT<double> SHCoeffs_TotalTransfer;      // SH coefficients of the (total) transfer function (that is, direct and bounce transfer).
41
42    VectorT       Coord;        // Position (+safety) in world space of the center of the patch. Valid only if InsideFace==true.
43#if USE_NORMALMAPS
44    VectorT       Normal;       // Normal of the patch. Derived from the normal map normals that are covered by this patch.
45#endif
46    bool          InsideFace;   // InsideFace==true <==> this patch is not completely outside its face
47};
48
49
50/// This class provides the interface that is needed to compute and store the SH lighting.
51class CaSHLWorldT
52{
53    public:
54
55    CaSHLWorldT(const char* FileName, ModelManagerT& ModelMan);
56
57    const cf::SceneGraph::BspTreeNodeT& GetBspTree() const { return *World.BspTree; }
58
59    double TraceRay(const Vector3dT& Start, const Vector3dT& Ray) const;
60
61    void PatchesToSHLMaps(const ArrayT< ArrayT<PatchT> >& Patches);
62
63    // Forwarded functions.
64    void SaveToDisk(const char* FileName) const;
65
66
67    private:
68
69    WorldT World;
70};
71
72#endif
Note: See TracBrowser for help on using the browser.