fog.h
上传用户:qccn516
上传日期:2013-05-02
资源大小:3382k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /* Fog
  2.  *
  3.  * Copyright (C) 2003-2004, Alexander Zaprjagaev <frustum@frustum.org>
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  */
  19. #ifndef __FOG_H__
  20. #define __FOG_H__
  21. #include "mathlib.h"
  22. #include "bsp.h"
  23. #include "position.h"
  24. #define FOG_DEPTH_TO_RGB "fog_depth_to_rgb.shader"
  25. #define FOG_PASS "fog_pass.shader"
  26. #define FOG_FAIL "fog_fail.shader"
  27. #define FOG_FINAL "fog_final.shader"
  28. class Mesh;
  29. class PBuffer;
  30. class Texture;
  31. class Shader;
  32. class Fog {
  33. public:
  34. Fog(Mesh *mesh,const vec4 &color);
  35. ~Fog();
  36. void enable();
  37. void disable();
  38. int render();
  39. float getDensity(const vec3 &point);
  40. int inside(const vec3 &point);
  41. const vec3 &getMin();
  42. const vec3 &getMax();
  43. const vec3 &getCenter();
  44. float getRadius();
  45. Position pos; // position
  46. Mesh *mesh; // mesh
  47. vec4 color; // color
  48. protected:
  49. static int counter; // usage counter
  50. static PBuffer *pbuffer;
  51. static Texture *depth_tex;
  52. static Texture *fog_tex;
  53. static PBuffer *pbuffers[3]; // three different resolution 128/256/512
  54. static Texture *depth_texes[3];
  55. static Texture *fog_texes[3];
  56. static Shader *depth_to_rgb_shader;
  57. static Shader *pass_shader;
  58. static Shader *fail_shader;
  59. static Shader *final_shader;
  60. };
  61. #endif /* __FOG_H__ */