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
#include "Headers/CubeScene.h"

#include "Managers/Headers/SceneManager.h"
#include "Geometry/Shapes/Headers/Predefined/Quad3D.h"
#include "Rendering/Headers/DeferredShadingRenderer.h"
#include "Core/Math/Headers/Transform.h"

REGISTER_SCENE(CubeScene);

void CubeScene::render(){
}

void CubeScene::processTasks(const U32 time){
	LightManager::LightMap& lights = LightManager::getInstance().getLights();
	F32 updateLights = 0.005f;

	if(time - _taskTimers[0] >= updateLights){
		for(U8 row=0; row<3; row++)
			for(U8 col=0; col < lights.size()/3.0f; col++){
				F32 x = col * 150.0f - 5.0f + cos(GETMSTIME()*(col-row+2)*0.008f)*200.0f;
				F32 y = cos(GETTIME()*(col-row+2)*0.01f)*200.0f+20;;
				F32 z = row * 500.0f -500.0f - cos(GETMSTIME()*(col-row+2)*0.009f)*200.0f+10;
				F32 r = 1;
				F32 g = 1.0f-(row/3.0f);
				F32 b = col/(lights.size()/3.0f);

				lights[row*10+col]->setPosition(vec3<F32>(x,y,z));
				lights[row*10+col]->setLightProperties(LIGHT_PROPERTY_DIFFUSE,vec4<F32>(r,g,b,1));
			}

		_taskTimers[0] += updateLights;
	}
}

I8 j = 1;
F32 i = 0;
bool _switch = false;
void CubeScene::preRender() {
	if(i >= 360) _switch = true;
	else if(i <= 0) _switch = false;

	if(!_switch) i += 0.1f;
	else i -= 0.1f;

	i >= 180 ? j = -1 : j = 1;

	SceneGraphNode* cutia1 = _sceneGraph->findNode("Cutia1");
	SceneGraphNode* hellotext = _sceneGraph->findNode("HelloText");
	SceneGraphNode* bila = _sceneGraph->findNode("Bila");
	SceneGraphNode* dwarf = _sceneGraph->findNode("dwarf");
	cutia1->getTransform()->rotateEuler(vec3<F32>(0.3f*i, 0.6f*i,0));
	hellotext->getTransform()->rotate(vec3<F32>(0.6f,0.2f,0.4f),i);
	bila->getTransform()->translateY(j*0.25f);
	dwarf->getTransform()->rotate(vec3<F32>(0,1,0),i);
}

void CubeScene::processInput(){
	if(state()._angleLR) renderState().getCamera().rotateYaw(state()._angleLR);
	if(state()._angleUD) renderState().getCamera().rotatePitch(state()._angleUD);
	if(state()._moveFB)  renderState().getCamera().moveForward(state()._moveFB);
	if(state()._moveLR)  renderState().getCamera().moveStrafe(state()._moveLR);
}

bool CubeScene::load(const std::string& name, CameraManager* const cameraMgr){
	GFX_DEVICE.setRenderer(New DeferredShadingRenderer());
	//Load scene resources
	return SCENE_LOAD(name,cameraMgr,true,true);
}

bool CubeScene::loadResources(bool continueOnErrors){
	//30 lights? >:)

	for(U8 row=0; row<3; row++)
		for(U8 col=0; col < 10; col++){
			U8 lightId = (U8)(row*10+col);
			std::stringstream ss; ss << (U32)lightId;
			ResourceDescriptor tempLight("Light Deferred " + ss.str());
			tempLight.setId(lightId);
			tempLight.setEnumValue(LIGHT_TYPE_POINT);
			Light* light = CreateResource<Light>(tempLight);
			light->setDrawImpostor(true);
			light->setRange(30);
			light->setCastShadows(false); //ToDo: Shadows are ... for another time -Ionut
			_sceneGraph->getRoot()->addNode(light);
			addLight(light);
	}

	_taskTimers.push_back(0.0f);

	return true;
}

void CubeScene::onKeyDown(const OIS::KeyEvent& key)
{
	Scene::onKeyDown(key);
	switch(key.key)	{
		default: break;
		case OIS::KC_W: state()._moveFB =  1; break;
		case OIS::KC_A:	state()._moveLR = -1; break;
		case OIS::KC_S:	state()._moveFB = -1; break;
		case OIS::KC_D:	state()._moveLR =  1; break;
		case OIS::KC_T:	_GFX.getRenderer()->toggleDebugView(); break;
	}
}

void CubeScene::onKeyUp(const OIS::KeyEvent& key)
{
	Scene::onKeyUp(key);
	switch(key.key)
	{
		case OIS::KC_W:
		case OIS::KC_S:	state()._moveFB = 0;	break;
		case OIS::KC_A:
		case OIS::KC_D:	state()._moveLR = 0;	break;
		default: break;
	}
}

Commits for Divide-Framework/trunk/Source Code/Scenes/CubeScene/CubeScene.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]]

151 Diff Diff k1ngp1n picture k1ngp1n Tue 07 May, 2013 00:00:52 +0000

[Ionut] [[BR]]
- Better ReCast integration [[BR]]
— Any entity can be used as an obstacle in the NavMesh if that’s specified in each scene’s assets.xml file for said entity [[BR]]
— New console command, “createNavMesh”, that passes geometry data to ReCast [[BR]]
-— NavMesh generation is not yet complete [[BR]]
- Better PhysX integration [[BR]]
— Each scene passes data to and gets data from the Physics API better and safer[[BR]]
- Multi-threaded support extended: [[BR]]
— Event class replaced with Task [[BR]]
— Kernel uses a threadpool for scene tasks [[BR]]
— Each task can be added to a different threadpool if needed [[BR]]
— Most critical sections use the new boost::atomic wrapper for thread safety [[BR]]
- Rendering system updated [[BR]]
— VBO’s keep track of the geometry type internally [[BR]]
— Rendering by specific element list is internal to the VBO [[BR]]
— VBO’s can draw a “lite” version that doesn’t send Tangent, BiTangent and TexCoord data for depth rendering (disabled) [[BR]]
- Reflectors now offer a preview of the generated reflective texture if needed [[BR]]
- Buttons are now added and rendered by CEGUI [[BR]]
[[BR]]
Deprecation: [[BR]]
- Removed fixed pipeline material system [[BR]]
- Removed BoundingBox late update system [[BR]]
- Shadow references in the material system are now depth references [[BR]]
[[BR]]
Bug fixes: [[BR]]
- Problematic FBO double bind check removed [[BR]]
- Faster terrain rendering via chunk size selection through each scene’s terrain.xml[[BR]]
- Rendering is paused when the window is minimized [[BR]]
- CEGUI and impostors now render properly in deferred rendering mode [[BR]]
- Fixed various level 4 (VS2008) warnings [[BR]]
- Better state management and cleaning [[BR]]
- Better SceneGraph node management and trasformation/AABB update calls [[BR]]
- AITenisScene has proper collisions now [[BR]]

149 Diff Diff k1ngp1n picture k1ngp1n Sun 21 Apr, 2013 21:38:05 +0000

[Ionut] [[BR]]
- Major GUI revamp: [[BR]]
— Fixed CEGUI rendering (invalid state reset after VBO/VAO unbind) [[BR]]
— Added a working Console window with a basic command parser [[BR]]
— GUI inputs take priority over scene (e.g. pressing a key in the console, does not affect the scene)[[BR]]
— Added AutoKey repeat [[BR]]
— Added config options for the GUI [[BR]]
- Revamped OpenGL Vertex Array Object class [[BR]]
— VBO’s without a shader attached will not use VAO’s [[BR]]
— VAO’s and VBO’s cleanup all states after them [[BR]]
- Added multiple Joystick support [[BR]]
- FrameBufferObject take in account the combination of texture id and bind slot when checking for double binds [[BR]]
- Upgraded Framerate/timing system [[BR]]
- Fixed Deferred rendering (typo in normal buffer creation) [[BR]]
- Fixed initial camera placement via scene config (RotateX(Y) replace with setAngleX(Y)) on camera init) [[BR]]
- Added better thread deletion in Event class [[BR]]
- Major mutex/semaphore/shared_lock rework in threaded classes [[BR]]
- Better A.I. initialization/destruction [[BR]]
- Fixed a typo in window positioning [[BR]]
- Better Unit movement code [[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]]

141 Diff Diff k1ngp1n picture k1ngp1n Wed 30 Jan, 2013 19:35:31 +0000

[Ionut] [[BR]]
-Updated to boost 1.52 and CEGUI 0.7.9 [[BR]]
-Updated to PhysX 3.2 [[BR]]
-Updated copyright notices [[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]]

121 Diff Diff k1ngp1n picture k1ngp1n Sun 10 Jun, 2012 16:40:45 +0000

[Ionut] [[BR]]
-Added basic localization support [[BR]]
-Added cross-platform INI parsing [[BR]]
-Moved ReCast+Detour to LIBS folder [[BR]]

120 Diff Diff k1ngp1n picture k1ngp1n Sat 09 Jun, 2012 20:44:43 +0000

[Ionut] [[BR]]
-Added a new class, “SceneState” which holds information that does not affect scene logic such as wind and fog information, visibility toggles etc [[BR]]
--“Scene” is new derived from this state as well as from “Resource” [[BR]]
-Cleaned up “SceneManager” and “Scene” classes for fewer virtual call lookups and easier interfaces [[BR]]
-Each scene now loads it’s own XML files (moved from “Kernel” [[BR]]
-Scene’s are now auto-registered to the SceneManager’s scene-factory via a call to “REGISTER_SCENE” [[BR]]
-Added error codes for various initialization steps [[BR]]
-Reworked object selection and deletion (still not tested) [[BR]]
-fog can now be toggled on and off via “config.xml” [[BR]]

119 k1ngp1n picture k1ngp1n Fri 08 Jun, 2012 19:40:41 +0000

[Ionut] [[BR]]
-Reworked resolution change callbacks and render target resizing [[BR]]
-Changed Depth of Field o a proper “PreRenderOperator” [[BR]]
-AIManager is now created and started by the “Kernel” [[BR]]
-LightManager is now handled in the “Kernel”. Individual lights are still scene’s responsibility [[BR]]
-Added a “preLoad” method to scene’s used to setup the engine before loading any assets (eg: setting deferred mode) [[BR]]
-Fixed a small bug in sensor addition to “AIEntity” [[BR]]
-Fixed a bug related to refreshing VBO data [[BR]]
-Fixed a bug related to Bloom outputFBO not unbinding [[BR]]
-Scene’s “setInitialData()” is renamed to “loadXMLAssets()” and is automatically called before Scene’s “load()” is called [[BR]]