Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "Headers/glResources.h"
#include "Headers/glEnumTable.h"

GLenum glBlendTable[BlendProperty_PLACEHOLDER];
GLenum glBlendOpTable[BlendOperation_PLACEHOLDER];
GLenum glCompareFuncTable[ComparisonFunction_PLACEHOLDER];
GLenum glStencilOpTable[StencilOperation_PLACEHOLDER];
GLenum glCullModeTable[CullMode_PLACEHOLDER];
GLenum glFillModeTable[FillMode_PLACEHOLDER];
GLenum glTextureTypeTable[TextureType_PLACEHOLDER];
GLenum glImageFormatTable[IMAGE_FORMAT_PLACEHOLDER];
GLenum glPrimitiveTypeTable[PrimitiveType_PLACEHOLDER];
GLenum glDataFormat[GDF_PLACEHOLDER];
GLuint glWrapTable[TextureWrap_PLACEHOLDER];
GLuint glTextureFilterTable[TextureFilter_PLACEHOLDER];

namespace GL_ENUM_TABLE {
	void fill(){
	   glBlendTable[BLEND_PROPERTY_ZERO] = GL_ZERO;
	   glBlendTable[BLEND_PROPERTY_ONE] = GL_ONE;
	   glBlendTable[BLEND_PROPERTY_SRC_COLOR] = GL_SRC_COLOR;
	   glBlendTable[BLEND_PROPERTY_INV_SRC_COLOR] = GL_ONE_MINUS_SRC_COLOR;
	   glBlendTable[BLEND_PROPERTY_SRC_ALPHA] = GL_SRC_ALPHA;
	   glBlendTable[BLEND_PROPERTY_INV_SRC_ALPHA] = GL_ONE_MINUS_SRC_ALPHA;
	   glBlendTable[BLEND_PROPERTY_DEST_ALPHA] = GL_DST_ALPHA;
	   glBlendTable[BLEND_PROPERTY_INV_DEST_ALPHA] = GL_ONE_MINUS_DST_ALPHA;
	   glBlendTable[BLEND_PROPERTY_DEST_COLOR] = GL_DST_COLOR;
	   glBlendTable[BLEND_PROPERTY_INV_DEST_COLOR] = GL_ONE_MINUS_DST_COLOR;
	   glBlendTable[BLEND_PROPERTY_SRC_ALPHA_SAT] = GL_SRC_ALPHA_SATURATE;

	   glBlendOpTable[BLEND_OPERATION_ADD] = GL_FUNC_ADD;
	   glBlendOpTable[BLEND_OPERATION_SUBTRACT] = GL_FUNC_SUBTRACT;
	   glBlendOpTable[BLEND_OPERATION_REV_SUBTRACT] = GL_FUNC_REVERSE_SUBTRACT;
	   glBlendOpTable[BLEND_OPERATION_MIN] = GL_MIN;
	   glBlendOpTable[BLEND_OPERATION_MAX] = GL_MAX;

	   glCompareFuncTable[CMP_FUNC_NEVER] = GL_NEVER;
	   glCompareFuncTable[CMP_FUNC_LESS] = GL_LESS;
	   glCompareFuncTable[CMP_FUNC_EQUAL] = GL_EQUAL;
	   glCompareFuncTable[CMP_FUNC_LEQUAL] = GL_LEQUAL;
	   glCompareFuncTable[CMP_FUNC_GREATER] = GL_GREATER;
	   glCompareFuncTable[CMP_FUNC_NEQUAL] = GL_NOTEQUAL;
	   glCompareFuncTable[CMP_FUNC_GEQUAL] = GL_GEQUAL;
	   glCompareFuncTable[CMP_FUNC_ALWAYS] = GL_ALWAYS;

	   glStencilOpTable[STENCIL_OPERATION_KEEP] = GL_KEEP;
	   glStencilOpTable[STENCIL_OPERATION_ZERO] = GL_ZERO;
	   glStencilOpTable[STENCIL_OPERATION_REPLACE] = GL_REPLACE;
	   glStencilOpTable[STENCIL_OPERATION_INCR] = GL_INCR;
	   glStencilOpTable[STENCIL_OPERATION_DECR] = GL_DECR;
	   glStencilOpTable[STENCIL_OPERATION_INV]  = GL_INVERT;
	   glStencilOpTable[STENCIL_OPERATION_INCR_WRAP] = GL_INCR_WRAP;
	   glStencilOpTable[STENCIL_OPERATION_DECR_WRAP] = GL_DECR_WRAP;

	   glCullModeTable[CULL_MODE_NONE] = GL_BACK;
	   glCullModeTable[CULL_MODE_CW]   = GL_BACK;
	   glCullModeTable[CULL_MODE_CCW]  = GL_FRONT;
	   glCullModeTable[CULL_MODE_ALL]  = GL_FRONT_AND_BACK;

	   glFillModeTable[FILL_MODE_POINT]     = GL_POINT;
	   glFillModeTable[FILL_MODE_WIREFRAME] = GL_LINE;
	   glFillModeTable[FILL_MODE_SOLID]     = GL_FILL;

 	   glTextureTypeTable[TEXTURE_1D] = GL_TEXTURE_1D;
	   glTextureTypeTable[TEXTURE_2D] = GL_TEXTURE_2D;
	   glTextureTypeTable[TEXTURE_3D] = GL_TEXTURE_3D;
	   glTextureTypeTable[TEXTURE_CUBE_MAP] = GL_TEXTURE_CUBE_MAP;
	   glTextureTypeTable[TEXTURE_2D_ARRAY] = GL_TEXTURE_2D_ARRAY_EXT;
	   glTextureTypeTable[TEXTURE_CUBE_ARRAY] = GL_TEXTURE_CUBE_MAP_ARRAY;
	   glTextureTypeTable[TEXTURE_2D_MS] = GL_TEXTURE_2D_MULTISAMPLE;
	   glTextureTypeTable[TEXTURE_2D_ARRAY_MS] = GL_TEXTURE_2D_MULTISAMPLE_ARRAY;

	   glImageFormatTable[LUMINANCE] = GL_LUMINANCE;
	   glImageFormatTable[LUMINANCE_ALPHA] = GL_LUMINANCE_ALPHA;
	   glImageFormatTable[INTENSITY] = GL_INTENSITY;
	   glImageFormatTable[ALPHA] = GL_ALPHA;
	   glImageFormatTable[RGB] = GL_RGB;
	   glImageFormatTable[BGR] = GL_BGR;
	   glImageFormatTable[RGB8] = GL_RGB8;
	   glImageFormatTable[RGB8I] = GL_RGB8I;
	   glImageFormatTable[RGB16] = GL_RGB16;
	   glImageFormatTable[RGB16F] = GL_RGB16F;
	   glImageFormatTable[BGRA] = GL_BGRA;
	   glImageFormatTable[RGBA] = GL_RGBA;
	   glImageFormatTable[RGBA4] = GL_RGBA4;
	   glImageFormatTable[RGBA8] = GL_RGBA8;
	   glImageFormatTable[RGBA8I] = GL_RGBA8I;
	   glImageFormatTable[RGBA16F] = GL_RGBA16F;
	   glImageFormatTable[RGBA32F] = GL_RGBA32F;
	   glImageFormatTable[DEPTH_COMPONENT] = GL_DEPTH_COMPONENT;
       glImageFormatTable[DEPTH_COMPONENT16] = GL_DEPTH_COMPONENT16;
	   glImageFormatTable[DEPTH_COMPONENT24] = GL_DEPTH_COMPONENT24;
       glImageFormatTable[DEPTH_COMPONENT32] = GL_DEPTH_COMPONENT32;

	   glPrimitiveTypeTable[API_POINTS] = GL_POINTS;
	   glPrimitiveTypeTable[LINES] = GL_LINES;
	   glPrimitiveTypeTable[LINE_LOOP] = GL_LINE_LOOP;
	   glPrimitiveTypeTable[LINE_STRIP] = GL_LINE_STRIP;
	   glPrimitiveTypeTable[TRIANGLES] = GL_TRIANGLES;
	   glPrimitiveTypeTable[TRIANGLE_STRIP] = GL_TRIANGLE_STRIP;
	   glPrimitiveTypeTable[TRIANGLE_FAN] = GL_TRIANGLE_FAN;
	   glPrimitiveTypeTable[QUADS] = GL_QUADS;
	   glPrimitiveTypeTable[QUAD_STRIP] = GL_QUAD_STRIP;
	   glPrimitiveTypeTable[POLYGON] = GL_POLYGON;

	   glDataFormat[UNSIGNED_BYTE] = GL_UNSIGNED_BYTE;
	   glDataFormat[UNSIGNED_SHORT] = GL_UNSIGNED_SHORT;
	   glDataFormat[UNSIGNED_INT] = GL_UNSIGNED_INT;
	   glDataFormat[SIGNED_BYTE] = GL_BYTE;
	   glDataFormat[SIGNED_SHORT] = GL_SHORT;
	   glDataFormat[SIGNED_INT] = GL_INT;
	   glDataFormat[FLOAT_32] = GL_FLOAT;

	   glWrapTable[TEXTURE_REPEAT] = GL_REPEAT;
	   glWrapTable[TEXTURE_CLAMP] = GL_CLAMP;
	   glWrapTable[TEXTURE_CLAMP_TO_EDGE] = GL_CLAMP_TO_EDGE;
	   glWrapTable[TEXTURE_CLAMP_TO_BORDER] =  GL_CLAMP_TO_BORDER;
	   glWrapTable[TEXTURE_DECAL] = GL_DECAL;

	   glTextureFilterTable[TEXTURE_FILTER_LINEAR] = GL_LINEAR;
	   glTextureFilterTable[TEXTURE_FILTER_NEAREST] = GL_NEAREST;
	   glTextureFilterTable[TEXTURE_FILTER_NEAREST_MIPMAP_NEAREST] = GL_NEAREST_MIPMAP_NEAREST;
	   glTextureFilterTable[TEXTURE_FILTER_LINEAR_MIPMAP_NEAREST] = GL_LINEAR_MIPMAP_NEAREST;
	   glTextureFilterTable[TEXTURE_FILTER_NEAREST_MIPMAP_LINEAR] = GL_NEAREST_MIPMAP_LINEAR;
	   glTextureFilterTable[TEXTURE_FILTER_LINEAR_MIPMAP_LINEAR] = GL_LINEAR_MIPMAP_LINEAR;
	}
}

Commits for Divide-Framework/trunk/Source Code/Hardware/Video/OpenGL/glEnumTable.cpp

Diff revisions: vs.
Revision Author Commited Message
168 Diff Diff k1ngp1n picture k1ngp1n Sat 26 Oct, 2013 19:03:21 +0000

- Reworked the Camera class[[BR]]
— Now fully quaternion based [[BR]]
— Basic camera types added but not used yet (third person, first person, orbit) [[BR]]
- Cleaned up Material and Texture handling [[BR]]
- Added clipping plane support [[BR]]
— Similar to OpenGL fixed-function clip planes but fully shader driven [[BR]]
— Added a new class, “Plane”, that helps define clip planes [[BR]]
- Optimized the Singleton class to allow faster “getInstance” calls without performance penalties [[BR]]
-- “createInstance” must be called for each singleton class before usage. Or “gerOrCreateInstance” can be used, which is basically the former “getInstance” implementation [[BR]]
- Improved console logging by changing some heap allocations to stack and removing dependencies on the std::string class [[BR]]
- Added a lot of performance optimizations related to coding standards and redundant calculations [[BR]]
— e.g. Frustum AABB check didn’t need to recompute the AABB points as they were calculated already [[BR]]
— e.g. A vector did not need to be set to 0 on initialization as that is already it’s default state on creation [[BR]]
— e.g. Faster Framerate and Timing calculations by using less member variables that are not needed outsied of calling functions [[BR]]
- The SceneState now contains the SceneRenderState and is passed on to the SceneGraph’s update calls [[BR]]
- Better material export/import to/from XML format [[BR]]
- More bug fixes and cleanups [[BR]]

152 Diff Diff k1ngp1n picture k1ngp1n Thu 20 Jun, 2013 14:23:31 +0000

[Ionut] [[BR]]
- New rendering pipeline (experimental and unstable): [[BR]]
— OpenGL 3.x clean context (glLight commands are still used for now, but UBO support is there, but not used yet) [[BR]]
— Custom matrix stacks and UBO based shader data (UBOs cause some link errors on some nVidia cards)[[BR]]
— Multi-threaded texture loading and shader compilation (mt shader compilation disabled for now. needs more tests) [[BR]]
— VAO rendering is self contained (no more enable/disable calls before a draw request) [[BR]]
— Render instance class used for rendering information [[BR]]
[[BR]]
- New unique ID generation base class: GUIDWrapper. Each class that derives from this, gets an application wide unique id on construction [[BR]]
- Added base code for an in-game editor using CEGUI [[BR]]
- Replaced some mutex locks with lockless data structures or atomic data [[BR]]
- CEGUI 0.8.2, FTGL-GL3 and GLIM 0.4 modified to support GLEW_MX if defined [[BR]]
- Dropped VS2008 support [[BR]]
- Networking library, server framework and ReCast files are now projects inside the Divide Framework solution [[BR]]
- New console command “setFov” that modifies the horizontal FoV value in realtime [[BR]]
- New console command “recompileShader” that reparses shader files, recompiles shaders and relinks shader programs who’s names match or contain the argument string [[BR]]
- New debug utility: axis angle drawn in corner of the screen if needed [[BR]]
- More ‘const’-s pasted around the code, more loop performance tweaks (allocations before a loop, tighter loops, etc), more utility member functions added to various classes [[BR]]

146 Diff Diff k1ngp1n picture k1ngp1n Wed 10 Apr, 2013 13:20:15 +0000

[Ionut] [[BR]]
*Final LightBranch updates 2/3 : Main trunk merge and build test (VC90, VC100, gDebugger) [[BR]]
-Merged light branch with trunk [[BR]]
-Deleted light branch [[BR]]

123 Diff Diff k1ngp1n picture k1ngp1n Tue 12 Jun, 2012 16:52:41 +0000

[Ionut] [[BR]]
-Split FBO’s in 3: RenderToTexture, RenderToDepth and RenderToDeferred (experimental) [[BR]]

122 Diff Diff k1ngp1n picture k1ngp1n Mon 11 Jun, 2012 14:39:08 +0000

[Ionut] [[BR]]
-Restructured “Hardware” folder to match the rest of the projects header-separation pattern [[BR]]

103 k1ngp1n picture k1ngp1n Mon 12 Mar, 2012 19:06:00 +0000

[Ionut] [[BR]]
Features: [[BR]]
-Added a proper RenderState Management system similar to the D3D default one[[BR]]
--All possible states are managed: cull, blend, alpha-blend, color mask, lighting, stencil mask, fill mode etc [[BR]]
--Every material has different states for normal rendering, shadow rendering and reflection rendering [[BR]]
--Nodes are sorted by shader first then by state hash depending on current render stage [[BR]]
--Redundant states are not changed [[BR]]
--Every entity submits it’s desired state before render [[BR]]
--Every state is checked before rendering a VBO or other primitive type[[BR]]
[[BR]]
-Added a Reflector base class used for reflection calculations and updates (useful for water, mirrors, portals etc)[[BR]]
--Reflections are triggered between pre-render and render calls [[BR]]
--Water now derives from Reflector class as well [[BR]]
[[BR]]
-Material now properly calculates if it has transparency or is double sided, setting desired states to handle this feature (cull, blend) [[BR]]
-Added some basic defines or inline template functions to facilitate access to useful classes and methods (hardware devices, resource management, console printing, etc) [[BR]]
-Lights are updated after every camera update[[BR]]
-Added a new FrameListener event triggered after pre-render call is finished (used by reflectors) [[BR]]
-Added a CRC class to compute unique hash values for entities[[BR]]
-Added D3D dummy files [[BR]]
-Removed executables from subversion [[BR]]
Performance: [[BR]]
-Image loading has been improved a bit [[BR]]
-Terrain texel density now varies with LOD level [[BR]]
-Light API specific calls,except position, are set only if values changed[[BR]]
-Specific GUI casting and rendering are the Rendering API’s job now, not the GUI class [[BR]]
-Rendering Queue processing is now more efficient in sorting valid visible nodes and setting appropriate states/materials
[[BR]]
Bug fixes: [[BR]]
-Better drawState checks[[BR]]
-Proper light effects in deferred rendering[[BR]]
-Light dummy now renders properly[[BR]]
-Reworked bounding box computation [[BR]]
[[BR]]
Known bugs: [[BR]]
-Terrain infinite plain still not visible [[BR]]
-Some z-fighting occurs when looking at certain objects from a distance. (looking at another object and back again fixes it) [[BR]]