// This source file is part of HGamer3D // (A project to enable 3D game development in Haskell) // For the latest info, see http://www.althainz.de/HGamer3D.html // // Copyright 2011 Dr. Peter Althainz // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // EnumShadowTechnique.h // // // // // File for type, method, enum or function stubs // in: "..\OgreSDK_vc10_v1-7-4\include\OGRE\OgreCommon.h" // // each stub combines the following files: // a C++ implementation file, transforming cpp calls into C-functions // a C-header file, making this C-functions available for the C2HS parser // a chs file, give instructions to the C2HS parser. // // #include "wchar.h" // enum from ..\OgreSDK_vc10_v1-7-4\include\OGRE\OgreCommon.h line:191 enum EnumShadowTechnique { /** No shadows */ SHADOWTYPE_NONE = 0x00, /** Mask for additive shadows (not for direct use, use SHADOWTYPE_ enum instead) */ SHADOWDETAILTYPE_ADDITIVE = 0x01, /** Mask for modulative shadows (not for direct use, use SHADOWTYPE_ enum instead) */ SHADOWDETAILTYPE_MODULATIVE = 0x02, /** Mask for integrated shadows (not for direct use, use SHADOWTYPE_ enum instead) */ SHADOWDETAILTYPE_INTEGRATED = 0x04, /** Mask for stencil shadows (not for direct use, use SHADOWTYPE_ enum instead) */ SHADOWDETAILTYPE_STENCIL = 0x10, /** Mask for texture shadows (not for direct use, use SHADOWTYPE_ enum instead) */ SHADOWDETAILTYPE_TEXTURE = 0x20, /** Stencil shadow technique which renders all shadow volumes as a modulation after all the non-transparent areas have been rendered. This technique is considerably less fillrate intensive than the additive stencil shadow approach when there are multiple lights, but is not an accurate model. */ SHADOWTYPE_STENCIL_MODULATIVE = 0x12, /** Stencil shadow technique which renders each light as a separate additive pass to the scene. This technique can be very fillrate intensive because it requires at least 2 passes of the entire scene, more if there are multiple lights. However, it is a more accurate model than the modulative stencil approach and this is especially apparent when using coloured lights or bump mapping. */ SHADOWTYPE_STENCIL_ADDITIVE = 0x11, /** Texture-based shadow technique which involves a monochrome render-to-texture of the shadow caster and a projection of that texture onto the shadow receivers as a modulative pass. */ SHADOWTYPE_TEXTURE_MODULATIVE = 0x22, /** Texture-based shadow technique which involves a render-to-texture of the shadow caster and a projection of that texture onto the shadow receivers, built up per light as additive passes. This technique can be very fillrate intensive because it requires numLights + 2 passes of the entire scene. However, it is a more accurate model than the modulative approach and this is especially apparent when using coloured lights or bump mapping. */ SHADOWTYPE_TEXTURE_ADDITIVE = 0x21, /** Texture-based shadow technique which involves a render-to-texture of the shadow caster and a projection of that texture on to the shadow receivers, with the usage of those shadow textures completely controlled by the materials of the receivers. This technique is easily the most flexible of all techniques because the material author is in complete control over how the shadows are combined with regular rendering. It can perform shadows as accurately as SHADOWTYPE_TEXTURE_ADDITIVE but more efficiently because it requires less passes. However it also requires more expertise to use, and in almost all cases, shader capable hardware to really use to the full. @note The 'additive' part of this mode means that the colour of the rendered shadow texture is by default plain black. It does not mean it does the adding on your receivers automatically though, how you use that result is up to you. */ SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED = 0x25, /** Texture-based shadow technique which involves a render-to-texture of the shadow caster and a projection of that texture on to the shadow receivers, with the usage of those shadow textures completely controlled by the materials of the receivers. This technique is easily the most flexible of all techniques because the material author is in complete control over how the shadows are combined with regular rendering. It can perform shadows as accurately as SHADOWTYPE_TEXTURE_ADDITIVE but more efficiently because it requires less passes. However it also requires more expertise to use, and in almost all cases, shader capable hardware to really use to the full. @note The 'modulative' part of this mode means that the colour of the rendered shadow texture is by default the 'shadow colour'. It does not mean it modulates on your receivers automatically though, how you use that result is up to you. */ SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED = 0x26 };