Просмотр исходного кода

- Moved the Tokenizer to another dir
- The first design of the new renderer Renderer2
- Slowly moving debug to OGL 3.x
- Misc changes

Panagiotis Christopoulos Charitos 15 лет назад
Родитель
Сommit
758ef841d9

+ 25 - 25
build/debug/Makefile

@@ -1,11 +1,11 @@
 CXX = g++
 COMMONFLAGS = 
-CFLAGS = $(COMMONFLAGS) -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg `sdl-config --cflags` -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -D_PLATFORM_LINUX_
+CFLAGS = $(COMMONFLAGS) -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg `sdl-config --cflags` -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -D_PLATFORM_LINUX_ -DREVISION=\"`svnversion -c ../..`\" 
 PHFLAGS = $(CFLAGS) -x c++-header
 LFLAGS = $(COMMONFLAGS) -rdynamic -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -Wl,-Bdynamic -lSDL -lGL -ljpeg -lpng -ltiff
 EXECUTABLE = AnKi.bin
-INCPATH = -I../../src/Math/ -I../../src/Tokenizer/ -I../../src/Misc/ -I../../src/ -I../../src/Renderer/ -I../../src/Scene/ -I../../src/Ui/ -I../../src/Resources/ -I../../src/Util/ -I../../src/Scene/Controllers/ -I../../src/Physics/ -I../../src/Renderer/BufferObjects/ -I../../../bullet_svn/src/ 
-SOURCES = ../../src/Tokenizer//Scanner.cpp ../../src/Misc//skybox.cpp ../../src/Misc//particles.cpp ../../src/Misc//memory.cpp ../../src/Misc//collision.cpp ../../src/Misc//map.cpp ../../src//Main.cpp ../../src/Renderer//PpsHdr.cpp ../../src/Renderer//Pps.cpp ../../src/Renderer//Bs.cpp ../../src/Renderer//IsShadows.cpp ../../src/Renderer//MsEarlyz.cpp ../../src/Renderer//Renderer.cpp ../../src/Renderer//Is.cpp ../../src/Renderer//PpsLscatt.cpp ../../src/Renderer//Ms.cpp ../../src/Renderer//BulletDebuger.cpp ../../src/Renderer//Bs2.cpp ../../src/Renderer//PpsSsao.cpp ../../src/Renderer//Dbg.cpp ../../src/Scene//MeshNode.cpp ../../src/Scene//SkelNode.cpp ../../src/Scene//SkelModelNode.cpp ../../src/Scene//Light.cpp ../../src/Scene//Camera.cpp ../../src/Scene//Scene.cpp ../../src/Scene//ParticleEmitter.cpp ../../src/Scene//SceneNode.cpp ../../src/Ui//Ui.cpp ../../src/Resources//Material.cpp ../../src/Resources//ShaderProg.cpp ../../src/Resources//Texture.cpp ../../src/Resources//SkelAnim.cpp ../../src/Resources//Extension.cpp ../../src/Resources//Skeleton.cpp ../../src/Resources//ShaderPrePreprocessor.cpp ../../src/Resources//Resource.cpp ../../src/Resources//LightProps.cpp ../../src/Resources//Mesh.cpp ../../src/Util//Input.cpp ../../src/Util//App.cpp ../../src/Util//Common.cpp ../../src/Util//Util.cpp ../../src/Scene/Controllers//Controller.cpp ../../src/Scene/Controllers//SkelAnimCtrl.cpp ../../src/Physics//PhyWorld.cpp 
+INCPATH = -I../../src/Math/ -I../../src/Util/Tokenizer/ -I../../src/Misc/ -I../../src/ -I../../src/Renderer/ -I../../src/Scene/ -I../../src/Ui/ -I../../src/Resources/ -I../../src/Util/ -I../../src/Scene/Controllers/ -I../../src/Physics/ -I../../src/Renderer/BufferObjects/ -I../../../bullet_svn/src/ 
+SOURCES = ../../src/Util/Tokenizer//Scanner.cpp ../../src/Misc//skybox.cpp ../../src/Misc//particles.cpp ../../src/Misc//memory.cpp ../../src/Misc//collision.cpp ../../src/Misc//map.cpp ../../src//Main.cpp ../../src/Renderer//PpsHdr.cpp ../../src/Renderer//Pps.cpp ../../src/Renderer//Bs.cpp ../../src/Renderer//IsShadows.cpp ../../src/Renderer//MsEarlyz.cpp ../../src/Renderer//Renderer.cpp ../../src/Renderer//Is.cpp ../../src/Renderer//PpsLscatt.cpp ../../src/Renderer//Ms.cpp ../../src/Renderer//BulletDebuger.cpp ../../src/Renderer//Bs2.cpp ../../src/Renderer//PpsSsao.cpp ../../src/Renderer//Dbg.cpp ../../src/Scene//MeshNode.cpp ../../src/Scene//SkelNode.cpp ../../src/Scene//SkelModelNode.cpp ../../src/Scene//Light.cpp ../../src/Scene//Camera.cpp ../../src/Scene//Scene.cpp ../../src/Scene//ParticleEmitter.cpp ../../src/Scene//SceneNode.cpp ../../src/Ui//Ui.cpp ../../src/Resources//Material.cpp ../../src/Resources//ShaderProg.cpp ../../src/Resources//Texture.cpp ../../src/Resources//SkelAnim.cpp ../../src/Resources//Extension.cpp ../../src/Resources//Skeleton.cpp ../../src/Resources//ShaderPrePreprocessor.cpp ../../src/Resources//Resource.cpp ../../src/Resources//LightProps.cpp ../../src/Resources//Mesh.cpp ../../src/Util//Input.cpp ../../src/Util//App.cpp ../../src/Util//Common.cpp ../../src/Util//Util.cpp ../../src/Scene/Controllers//Controller.cpp ../../src/Scene/Controllers//SkelAnimCtrl.cpp ../../src/Physics//PhyWorld.cpp 
 OBJECTS = Scanner.o skybox.o particles.o memory.o collision.o map.o Main.o PpsHdr.o Pps.o Bs.o IsShadows.o MsEarlyz.o Renderer.o Is.o PpsLscatt.o Ms.o BulletDebuger.o Bs2.o PpsSsao.o Dbg.o MeshNode.o SkelNode.o SkelModelNode.o Light.o Camera.o Scene.o ParticleEmitter.o SceneNode.o Ui.o Material.o ShaderProg.o Texture.o SkelAnim.o Extension.o Skeleton.o ShaderPrePreprocessor.o Resource.o LightProps.o Mesh.o Input.o App.o Common.o Util.o Controller.o SkelAnimCtrl.o PhyWorld.o 
 PRECOMPILED_HEADERS = 
 
@@ -16,11 +16,11 @@ $(EXECUTABLE): $(OBJECTS)
 	@$(CXX) $(OBJECTS) $(LFLAGS) -o $(EXECUTABLE)
 	@echo All Done!
 
-Scanner.o: ../../src/Tokenizer//Scanner.cpp \
- ../../src/Tokenizer//Scanner.h ../../src/Util/Common.h \
+Scanner.o: ../../src/Util/Tokenizer//Scanner.cpp \
+ ../../src/Util/Tokenizer//Scanner.h ../../src/Util/Common.h \
  ../../src/Misc/memory.h
-	@echo Compiling ../../src/Tokenizer//Scanner.cpp...
-	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Tokenizer//Scanner.cpp -o Scanner.o
+	@echo Compiling ../../src/Util/Tokenizer//Scanner.cpp...
+	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Util/Tokenizer//Scanner.cpp -o Scanner.o
 
 skybox.o: ../../src/Misc//skybox.cpp ../../src/Misc//skybox.h \
  ../../src/Util/Common.h ../../src/Misc/memory.h \
@@ -226,8 +226,8 @@ map.o: ../../src/Misc//map.cpp ../../src/Misc//map.h \
  ../../src/Renderer/BufferObjects/BufferObject.h \
  ../../src/Resources/Resource.h ../../src/Util/Util.h \
  ../../src/Util/Common.h ../../src/Misc/collision.h \
- ../../src/Tokenizer/Scanner.h ../../src/Tokenizer/Parser.h \
- ../../src/Tokenizer/Scanner.h ../../src/Resources/Resource.h \
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Util/Tokenizer/Parser.h \
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Resources/Resource.h \
  ../../src/Scene/Camera.h ../../src/Scene/SceneNode.h
 	@echo Compiling ../../src/Misc//map.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Misc//map.cpp -o map.o
@@ -391,7 +391,7 @@ Main.o: ../../src//Main.cpp ../../src/Util/Common.h \
  ../../../bullet_svn/src/BulletCollision/CollisionDispatch/btCollisionWorld.h \
  ../../src/Physics/PhyConversions.h ../../src/Physics/MotionState.h \
  ../../src/Scene/SceneNode.h ../../src/Physics/PhyWorld.h \
- ../../src/Tokenizer/Scanner.h ../../src/Misc/map.h \
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Misc/map.h \
  ../../src/Misc/collision.h ../../src/Scene/MeshNode.h \
  ../../src/Scene/SkelModelNode.h ../../src/Scene/MeshNode.h \
  ../../src/Resources/SkelAnim.h \
@@ -401,8 +401,8 @@ Main.o: ../../src//Main.cpp ../../src/Util/Common.h \
  ../../src/Scene/Controllers/Controller.h \
  ../../src/Resources/LightProps.h ../../src/Renderer/BulletDebuger.h \
  ../../../bullet_svn/src/LinearMath/btIDebugDraw.h \
- ../../src/Physics/PhyCommon.h ../../src/Tokenizer/Parser.h \
- ../../src/Tokenizer/Scanner.h ../../src/Scene/ParticleEmitter.h \
+ ../../src/Physics/PhyCommon.h ../../src/Util/Tokenizer/Parser.h \
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Scene/ParticleEmitter.h \
  ../../src/Scene/GhostNode.h ../../src/Physics/PhyCharacter.h
 	@echo Compiling ../../src//Main.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src//Main.cpp -o Main.o
@@ -2282,7 +2282,7 @@ SkelModelNode.o: ../../src/Scene//SkelModelNode.cpp \
  ../../src/Math/Transform.inl.h ../../src/Resources/Material.h \
  ../../src/Resources/Resource.h ../../src/Util/Util.h \
  ../../src/Util/Common.h ../../src/Resources/ShaderProg.h \
- ../../src/Tokenizer/Parser.h ../../src/Tokenizer/Scanner.h \
+ ../../src/Util/Tokenizer/Parser.h ../../src/Util/Tokenizer/Scanner.h \
  ../../src/Scene//SkelNode.h ../../src/Scene/Controllers/Controller.h \
  ../../src/Scene/Controllers/MeshSkelNodeCtrl.h \
  ../../src/Scene/Controllers/Controller.h
@@ -2843,8 +2843,8 @@ Material.o: ../../src/Resources//Material.cpp \
  ../../src/Math/MathFuncs.inl.h ../../src/Math/Transform.h \
  ../../src/Math/Transform.inl.h ../../src/Resources//Resource.h \
  ../../src/Util/Util.h ../../src/Util/Common.h \
- ../../src/Resources//ShaderProg.h ../../src/Tokenizer/Scanner.h \
- ../../src/Tokenizer/Parser.h ../../src/Tokenizer/Scanner.h \
+ ../../src/Resources//ShaderProg.h ../../src/Util/Tokenizer/Scanner.h \
+ ../../src/Util/Tokenizer/Parser.h ../../src/Util/Tokenizer/Scanner.h \
  ../../src/Resources//Texture.h ../../src/Renderer/Renderer.h \
  ../../src/Resources/ShaderProg.h ../../src/Scene/Camera.h \
  ../../src/Misc/collision.h ../../src/Scene/SceneNode.h
@@ -2908,8 +2908,8 @@ SkelAnim.o: ../../src/Resources//SkelAnim.cpp \
  ../../src/Math/Mat3.inl.h ../../src/Math/Mat4.h \
  ../../src/Math/Mat4.inl.h ../../src/Math/MathFuncs.h \
  ../../src/Math/MathFuncs.inl.h ../../src/Math/Transform.h \
- ../../src/Math/Transform.inl.h ../../src/Tokenizer/Scanner.h \
- ../../src/Tokenizer/Parser.h ../../src/Tokenizer/Scanner.h
+ ../../src/Math/Transform.inl.h ../../src/Util/Tokenizer/Scanner.h \
+ ../../src/Util/Tokenizer/Parser.h ../../src/Util/Tokenizer/Scanner.h
 	@echo Compiling ../../src/Resources//SkelAnim.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//SkelAnim.cpp -o SkelAnim.o
 
@@ -2935,15 +2935,15 @@ Skeleton.o: ../../src/Resources//Skeleton.cpp \
  ../../src/Math/MathFuncs.inl.h ../../src/Math/Transform.h \
  ../../src/Math/Transform.inl.h ../../src/Resources//Resource.h \
  ../../src/Util/Util.h ../../src/Util/Common.h \
- ../../src/Tokenizer/Scanner.h ../../src/Tokenizer/Parser.h \
- ../../src/Tokenizer/Scanner.h
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Util/Tokenizer/Parser.h \
+ ../../src/Util/Tokenizer/Scanner.h
 	@echo Compiling ../../src/Resources//Skeleton.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//Skeleton.cpp -o Skeleton.o
 
 ShaderPrePreprocessor.o: ../../src/Resources//ShaderPrePreprocessor.cpp \
  ../../src/Resources//ShaderPrePreprocessor.h ../../src/Util/Common.h \
- ../../src/Misc/memory.h ../../src/Tokenizer/Scanner.h \
- ../../src/Tokenizer/Parser.h ../../src/Tokenizer/Scanner.h \
+ ../../src/Misc/memory.h ../../src/Util/Tokenizer/Scanner.h \
+ ../../src/Util/Tokenizer/Parser.h ../../src/Util/Tokenizer/Scanner.h \
  ../../src/Util/Util.h ../../src/Util/Common.h
 	@echo Compiling ../../src/Resources//ShaderPrePreprocessor.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//ShaderPrePreprocessor.cpp -o ShaderPrePreprocessor.o
@@ -2985,8 +2985,8 @@ LightProps.o: ../../src/Resources//LightProps.cpp \
  ../../src/Math/Mat3.inl.h ../../src/Math/Mat4.h \
  ../../src/Math/Mat4.inl.h ../../src/Math/MathFuncs.h \
  ../../src/Math/MathFuncs.inl.h ../../src/Math/Transform.h \
- ../../src/Math/Transform.inl.h ../../src/Tokenizer/Parser.h \
- ../../src/Tokenizer/Scanner.h ../../src/Resources//Texture.h
+ ../../src/Math/Transform.inl.h ../../src/Util/Tokenizer/Parser.h \
+ ../../src/Util/Tokenizer/Scanner.h ../../src/Resources//Texture.h
 	@echo Compiling ../../src/Resources//LightProps.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//LightProps.cpp -o LightProps.o
 
@@ -3008,8 +3008,8 @@ Mesh.o: ../../src/Resources//Mesh.cpp ../../src/Resources//Mesh.h \
  ../../src/Util/Common.h ../../src/Misc/collision.h \
  ../../src/Renderer/Renderer.h ../../src/Resources/ShaderProg.h \
  ../../src/Resources/Resource.h ../../src/Scene/Camera.h \
- ../../src/Scene/SceneNode.h ../../src/Tokenizer/Scanner.h \
- ../../src/Tokenizer/Parser.h ../../src/Tokenizer/Scanner.h
+ ../../src/Scene/SceneNode.h ../../src/Util/Tokenizer/Scanner.h \
+ ../../src/Util/Tokenizer/Parser.h ../../src/Util/Tokenizer/Scanner.h
 	@echo Compiling ../../src/Resources//Mesh.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Resources//Mesh.cpp -o Mesh.o
 

+ 2 - 2
build/debug/gen.cfg.py

@@ -1,4 +1,4 @@
-sourcePaths = [ "../../src/Math/", "../../src/Tokenizer/", "../../src/Misc/", "../../src/", "../../src/Renderer/", "../../src/Scene/", "../../src/Ui/", "../../src/Resources/", "../../src/Util/", "../../src/Scene/Controllers/", "../../src/Physics/", "../../src/Renderer/BufferObjects/" ]
+sourcePaths = [ "../../src/Math/", "../../src/Util/Tokenizer/", "../../src/Misc/", "../../src/", "../../src/Renderer/", "../../src/Scene/", "../../src/Ui/", "../../src/Resources/", "../../src/Util/", "../../src/Scene/Controllers/", "../../src/Physics/", "../../src/Renderer/BufferObjects/" ]
 
 includePaths = list(sourcePaths)
 includePaths.extend( [ "../../../bullet_svn/src/" ] ) # the bullet svn path
@@ -7,6 +7,6 @@ precompiledHeaders = []
 executableName = "AnKi.bin"
 compiler = "g++"
 commonFlags = ""
-compilerFlags = "-c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg `sdl-config --cflags` -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -D_PLATFORM_LINUX_"
+compilerFlags = "-c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg `sdl-config --cflags` -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -D_PLATFORM_LINUX_ -DREVISION=\\\"`svnversion -c ../..`\\\" "
 precompiledHeadersFlags = "-x c++-header"
 linkerFlags = "-rdynamic -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -Wl,-Bdynamic -lSDL -lGL -ljpeg -lpng -ltiff" # a few libs are now static

+ 4 - 4
src/Misc/skybox.cpp

@@ -60,10 +60,10 @@ void Skybox::Render( const Mat3& rotation )
 	glPushMatrix();
 
 	shader->bind();
-	glUniform1i( shader->getUniVar("colormap").getLoc(), 0 );
-	shader->locTexUnit( shader->getUniVar("noisemap").getLoc(), *noise, 1 );
-	glUniform1f( shader->getUniVar("timer").getLoc(), (rotation_ang/(2*PI))*100 );
-	glUniform3fv( shader->getUniVar("sceneAmbientCol").getLoc(), 1, &(Vec3( 1.0, 1.0, 1.0 ) / app->getScene()->getAmbientCol())[0] );
+	glUniform1i( shader->getUniVar("colormap")->getLoc(), 0 );
+	shader->locTexUnit( shader->getUniVar("noisemap")->getLoc(), *noise, 1 );
+	glUniform1f( shader->getUniVar("timer")->getLoc(), (rotation_ang/(2*PI))*100 );
+	glUniform3fv( shader->getUniVar("sceneAmbientCol")->getLoc(), 1, &(Vec3( 1.0, 1.0, 1.0 ) / app->getScene()->getAmbientCol())[0] );
 
 	// set the rotation matrix
 	Mat3 tmp( rotation );

+ 34 - 33
src/NAMING

@@ -1,37 +1,38 @@
 This file contains some of the naming shortcuts we use in AnKi
 
 
-Array              : arr
-Animation          : anim
-Application        : app
-Buffer             : buff
-Camera             : cam
-Color              : col
-Controller         : ctrl
-Feature            : feat
-Fragment           : frag
-Geometry           : geom
-Location           : loc
-Material           : mtl
-Matrix             : mat
-Number             : num
-Physics            : phy
-Property           : prop
-Quadrilateral      : quad
-Quaternion         : quat
-Resource           : rsrc
-Rotation           : rot
-Shader             : shdr
-Shader Program     : shaderProg or sProg
-Skeletal Animation : sAnim
-Skeleton           : skel
-Text               : txt
-Texture            : tex
-Transformation     : trf
-Translation        : tsl
-Triangle           : tri
-Utility            : util
-Variable           : var
-Vector             : vec
-Vertex             : vert
+Array                        : arr
+Animation                    : anim
+Application                  : app
+Buffer                       : buff
+Camera                       : cam
+Color                        : col
+Controller                   : ctrl
+Feature                      : feat
+Fragment                     : frag
+Framebuffer Attachable Image : fai
+Geometry                     : geom
+Location                     : loc
+Material                     : mtl
+Matrix                       : mat
+Number                       : num
+Physics                      : phy
+Property                     : prop
+Quadrilateral                : quad
+Quaternion                   : quat
+Resource                     : rsrc
+Rotation                     : rot
+Shader                       : shdr
+Shader Program               : shaderProg or sProg
+Skeletal Animation           : sAnim
+Skeleton                     : skel
+Text                         : txt
+Texture                      : tex
+Transformation               : trf
+Translation                  : tsl
+Triangle                     : tri
+Utility                      : util
+Variable                     : var
+Vector                       : vec
+Vertex                       : vert
 

+ 1 - 1
src/Physics/PhyCharacter.h

@@ -6,7 +6,7 @@
 
 
 /**
- * ToDo
+ * @todo write docs
  */
 class PhyCharacter
 {

+ 1 - 1
src/Renderer/Bs2.cpp

@@ -102,7 +102,7 @@ void runStage2( const Camera& cam )
 			fbo.bind();
 			glDisable( GL_DEPTH_TEST );
 			shaderProg->bind();
-			shaderProg->locTexUnit( shaderProg->getUniVar("fai").getLoc(), fai, 0 );
+			shaderProg->locTexUnit( shaderProg->getUniVar("fai")->getLoc(), fai, 0 );
 			R::DrawQuad( 0 );
 		}
 	}

+ 107 - 100
src/Renderer/Dbg.cpp

@@ -304,7 +304,7 @@ void renderQuad( float w, float h )
 //=====================================================================================================================================
 // renderSphere                                                                                                                       =
 //=====================================================================================================================================
-void renderSphere( float r, int p )
+void renderSphere( float radius, int complexity )
 {
 	const float twopi  = M::PI*2;
 	const float pidiv2 = M::PI/2;
@@ -321,51 +321,58 @@ void renderSphere( float r, int p )
 	float py = 0.0;
 	float pz = 0.0;
 
+	Vec<Vec3> positions;
+	Vec<Vec3> normals;
+	Vec<Vec2> texCoodrs;
 
-	for( int i = 0; i < p/2; ++i )
+	for( int i = 0; i < complexity/2; ++i )
 	{
-		theta1 = i * twopi / p - pidiv2;
-		theta2 = (i + 1) * twopi / p - pidiv2;
+		theta1 = i * twopi / complexity - pidiv2;
+		theta2 = (i + 1) * twopi / complexity - pidiv2;
 
-		glBegin( GL_QUAD_STRIP );
+		for( int j = complexity; j >= 0; --j )
 		{
-			for( int j = p; j >= 0; --j )
-			{
-				theta3 = j * twopi / p;
-
-				float sintheta1, costheta1;
-				sinCos( theta1, sintheta1, costheta1 );
-				float sintheta2, costheta2;
-				sinCos( theta2, sintheta2, costheta2 );
-				float sintheta3, costheta3;
-				sinCos( theta3, sintheta3, costheta3 );
-
-
-				ex = costheta2 * costheta3;
-				ey = sintheta2;
-				ez = costheta2 * sintheta3;
-				px = r * ex;
-				py = r * ey;
-				pz = r * ez;
-
-				glNormal3f( ex, ey, ez );
-				glTexCoord2f( -(j/(float)p) , 2*(i+1)/(float)p );
-				glVertex3f( px, py, pz );
-
-				ex = costheta1 * costheta3;
-				ey = sintheta1;
-				ez = costheta1 * sintheta3;
-				px = r * ex;
-				py = r * ey;
-				pz = r * ez;
-
-				glNormal3f( ex, ey, ez );
-				glTexCoord2f( -(j/(float)p), 2*i/(float)p );
-				glVertex3f( px, py, pz );
-			}
+			theta3 = j * twopi / complexity;
+
+			float sintheta1, costheta1;
+			sinCos( theta1, sintheta1, costheta1 );
+			float sintheta2, costheta2;
+			sinCos( theta2, sintheta2, costheta2 );
+			float sintheta3, costheta3;
+			sinCos( theta3, sintheta3, costheta3 );
+
+
+			ex = costheta2 * costheta3;
+			ey = sintheta2;
+			ez = costheta2 * sintheta3;
+			px = radius * ex;
+			py = radius * ey;
+			pz = radius * ez;
+
+			positions.push_back( Vec3(px, py, pz) );
+			normals.push_back( Vec3(ex, ey, ez) );
+			texCoodrs.push_back( Vec2(-(j/(float)complexity), 2*(i+1)/(float)complexity) );
+
+			ex = costheta1 * costheta3;
+			ey = sintheta1;
+			ez = costheta1 * sintheta3;
+			px = radius * ex;
+			py = radius * ey;
+			pz = radius * ez;
+
+			positions.push_back( Vec3(px, py, pz) );
+			normals.push_back( Vec3(ex, ey, ez) );
+			texCoodrs.push_back( Vec2(-(j/(float)complexity), 2*i/(float)complexity) );
 		}
-		glEnd();
 	}
+
+	glEnableClientState( GL_VERTEX_ARRAY );
+	glEnableClientState( GL_NORMAL_ARRAY );
+	glVertexPointer( 3, GL_FLOAT, 0, &positions[0][0] );
+	glNormalPointer( GL_FLOAT, 0, &normals[0][0] );
+	glDrawArrays( GL_QUAD_STRIP, 0, positions.size() );
+	glDisableClientState( GL_VERTEX_ARRAY );
+	glDisableClientState( GL_NORMAL_ARRAY );
 }
 
 
@@ -374,69 +381,69 @@ void renderSphere( float r, int p )
 //=====================================================================================================================================
 void renderCube( bool cols, float size )
 {
-	Vec3 maxPos( 0.5 );
-	Vec3 minPos( -0.5 );
-	float vertPositions[] = { maxPos.x, maxPos.y, maxPos.z,   // right top front
-	                          minPos.x, maxPos.y, maxPos.z,   // left top front
-	                          minPos.x, minPos.y, maxPos.z,   // left bottom front
-	                          maxPos.x, minPos.y, maxPos.z,   // right bottom front
-	                          maxPos.x, maxPos.y, minPos.z,   // right top back
-	                          minPos.x, maxPos.y, minPos.z,   // left top back
-	                          minPos.x, minPos.y, minPos.z,   // left bottom back
-	                          maxPos.x, minPos.y, minPos.z }; // right bottom back
-
-	uint vertIndices [] = { 0, 1, 2, 3, 4, 5, 6, 7, 4, 0, 3, 7, 1, 5, 6, 2, 0, 4, 5, 1, 3, 2, 6, 7, 5, 4, 7, 6 };
+	Vec3 maxPos( 0.5 * size );
+	Vec3 minPos( -0.5 * size );
+
+	Vec3 vertPositions[] = {
+		Vec3( maxPos.x, maxPos.y, maxPos.z ),  // right top front
+		Vec3( minPos.x, maxPos.y, maxPos.z ),  // left top front
+		Vec3( minPos.x, minPos.y, maxPos.z ),  // left bottom front
+		Vec3( maxPos.x, minPos.y, maxPos.z ),  // right bottom front
+		Vec3( maxPos.x, maxPos.y, minPos.z ),  // right top back
+		Vec3( minPos.x, maxPos.y, minPos.z ),  // left top back
+		Vec3( minPos.x, minPos.y, minPos.z ),  // left bottom back
+		Vec3( maxPos.x, minPos.y, minPos.z )   // right bottom back
+	};
+
+	Vec3 bakedVertPositions[] = {
+		vertPositions[0], vertPositions[1], vertPositions[2], vertPositions[3], // front face
+		vertPositions[5], vertPositions[4], vertPositions[7], vertPositions[6], // back face
+		vertPositions[4], vertPositions[0], vertPositions[3], vertPositions[7], // right face
+		vertPositions[1], vertPositions[5], vertPositions[6], vertPositions[2], // left face
+		vertPositions[0], vertPositions[4], vertPositions[5], vertPositions[1], // top face
+		vertPositions[3], vertPositions[2], vertPositions[6], vertPositions[7]  // bottom face
+	};
+
+	static Vec3 normals[] = {
+		Vec3( 0.0, 0.0, 1.0 ),  // front face
+		Vec3( 0.0, 0.0, -1.0 ), // back face
+		Vec3( 1.0, 0.0, 0.0 ),  // right face
+		Vec3( -1.0, 0.0, 0.0 ), // left face
+		Vec3( 0.0, 1.0, 0.0 ),  // top face
+		Vec3( 0.0, -1.0, 0.0 )  // bottom face
+	};
+
+	static Vec3 bakedNormals [] = {
+		normals[0], normals[0], normals[0], normals[0],
+		normals[1], normals[1], normals[1], normals[1],
+		normals[2], normals[2], normals[2], normals[2],
+		normals[3], normals[3], normals[3], normals[3],
+		normals[4], normals[4], normals[4], normals[4],
+		normals[5], normals[5], normals[5], normals[5]
+	};
+
+	static Vec3 colors [] = {
+		Vec3( 0.0, 0.0, 1.0 ),
+		Vec3( 0.0, 0.0, 0.5 ),
+		Vec3( 1.0, 0.0, 0.0 ),
+		Vec3( 0.5, 0.0, 1.0 ),
+		Vec3( 0.0, 1.0, 1.0 ),
+		Vec3( 0.0, 0.5, 1.0 )
+	};
+
+	static Vec3 bakedColors [] = {
+		colors[0], colors[0], colors[0], colors[0],
+		colors[1], colors[1], colors[1], colors[1],
+		colors[2], colors[2], colors[2], colors[2],
+		colors[3], colors[3], colors[3], colors[3],
+		colors[4], colors[4], colors[4], colors[4],
+		colors[5], colors[5], colors[5], colors[5]
+	};
 
 	glEnableClientState( GL_VERTEX_ARRAY );
-	glVertexPointer( 3, GL_FLOAT, 0, vertPositions );
-	glDrawElements( GL_QUADS, sizeof(vertIndices)/sizeof(uint), GL_UNSIGNED_INT, vertIndices );
+	glVertexPointer( 3, GL_FLOAT, 0, bakedVertPositions );
+	glDrawArrays( GL_QUADS, 0, 24 );
 	glDisableClientState( GL_VERTEX_ARRAY );
-
-	/*size *= 0.5;
-	glBegin(GL_QUADS);
-		// Front Face
-		if(cols) glColor3f( 0.0, 0.0, 1.0 );
-		glNormal3f( 0.0, 0.0, 1.0f);
-		glTexCoord2f(0.0, 0.0); glVertex3f(-size, -size,  size);
-		glTexCoord2f(1.0, 0.0); glVertex3f( size, -size,  size);
-		glTexCoord2f(1.0, 1.0); glVertex3f( size,  size,  size);
-		glTexCoord2f(0.0, 1.0); glVertex3f(-size,  size,  size);
-		// Back Face
-		if(cols) glColor3f( 0.0, 0.0, size );
-		glNormal3f( 0.0, 0.0,-1.0f);
-		glTexCoord2f(1.0, 0.0); glVertex3f(-size, -size, -size);
-		glTexCoord2f(1.0, 1.0); glVertex3f(-size,  size, -size);
-		glTexCoord2f(0.0, 1.0); glVertex3f( size,  size, -size);
-		glTexCoord2f(0.0, 0.0); glVertex3f( size, -size, -size);
-		// Top Face
-		if(cols) glColor3f( 0.0, 1.0, 0.0 );
-		glNormal3f( 0.0, 1.0f, 0.0);
-		glTexCoord2f(0.0, 1.0); glVertex3f(-size,  size, -size);
-		glTexCoord2f(0.0, 0.0); glVertex3f(-size,  size,  size);
-		glTexCoord2f(1.0, 0.0); glVertex3f( size,  size,  size);
-		glTexCoord2f(1.0, 1.0); glVertex3f( size,  size, -size);
-		// Bottom Face
-		if(cols) glColor3f( 0.0, size, 0.0 );
-		glNormal3f( 0.0,-1.0f, 0.0);
-		glTexCoord2f(1.0, 1.0); glVertex3f(-size, -size, -size);
-		glTexCoord2f(0.0, 1.0); glVertex3f( size, -size, -size);
-		glTexCoord2f(0.0, 0.0); glVertex3f( size, -size,  size);
-		glTexCoord2f(1.0, 0.0); glVertex3f(-size, -size,  size);
-		// Right face
-		if(cols) glColor3f( 1.0, 0.0, 0.0 );
-		glNormal3f( 1.0f, 0.0, 0.0);
-		glTexCoord2f(1.0, 0.0); glVertex3f( size, -size, -size);
-		glTexCoord2f(1.0, 1.0); glVertex3f( size,  size, -size);
-		glTexCoord2f(0.0, 1.0); glVertex3f( size,  size,  size);
-		glTexCoord2f(0.0, 0.0); glVertex3f( size, -size,  size);
-		// Left Face
-		if(cols) glColor3f( size, 0.0, 0.0 );
-		glNormal3f(-1.0f, 0.0, 0.0);
-		glTexCoord2f(0.0, 0.0); glVertex3f(-size, -size, -size);
-		glTexCoord2f(1.0, 0.0); glVertex3f(-size, -size,  size);
-		glTexCoord2f(1.0, 1.0); glVertex3f(-size,  size,  size);
-		glTexCoord2f(0.0, 1.0); glVertex3f(-size,  size, -size);
-	glEnd();*/
 }
 
 

+ 36 - 36
src/Renderer/Is.cpp

@@ -189,46 +189,46 @@ void init()
 {
 	// load the shaders
 	ambientSProg.customLoad( "shaders/is_ap.glsl" );
-	ambientSProg.uniLocs.ambientCol = ambientSProg.getUniVar("ambientCol").getLoc();
-	ambientSProg.uniLocs.sceneColMap = ambientSProg.getUniVar("sceneColMap").getLoc();
+	ambientSProg.uniLocs.ambientCol = ambientSProg.getUniVar("ambientCol")->getLoc();
+	ambientSProg.uniLocs.sceneColMap = ambientSProg.getUniVar("sceneColMap")->getLoc();
 
 	pointLightSProg.customLoad( "shaders/is_lp_generic.glsl", "#define _POINT_LIGHT_\n" );
-	pointLightSProg.uniLocs.msNormalFai = pointLightSProg.getUniVar("msNormalFai").getLoc();
-	pointLightSProg.uniLocs.msDiffuseFai = pointLightSProg.getUniVar("msDiffuseFai").getLoc();
-	pointLightSProg.uniLocs.msSpecularFai = pointLightSProg.getUniVar("msSpecularFai").getLoc();
-	pointLightSProg.uniLocs.msDepthFai = pointLightSProg.getUniVar("msDepthFai").getLoc();
-	pointLightSProg.uniLocs.planes = pointLightSProg.getUniVar("planes").getLoc();
-	pointLightSProg.uniLocs.lightPos = pointLightSProg.getUniVar("lightPos").getLoc();
-	pointLightSProg.uniLocs.lightInvRadius = pointLightSProg.getUniVar("lightInvRadius").getLoc();
-	pointLightSProg.uniLocs.lightDiffuseCol = pointLightSProg.getUniVar("lightDiffuseCol").getLoc();
-	pointLightSProg.uniLocs.lightSpecularCol = pointLightSProg.getUniVar("lightSpecularCol").getLoc();
+	pointLightSProg.uniLocs.msNormalFai = pointLightSProg.getUniVar("msNormalFai")->getLoc();
+	pointLightSProg.uniLocs.msDiffuseFai = pointLightSProg.getUniVar("msDiffuseFai")->getLoc();
+	pointLightSProg.uniLocs.msSpecularFai = pointLightSProg.getUniVar("msSpecularFai")->getLoc();
+	pointLightSProg.uniLocs.msDepthFai = pointLightSProg.getUniVar("msDepthFai")->getLoc();
+	pointLightSProg.uniLocs.planes = pointLightSProg.getUniVar("planes")->getLoc();
+	pointLightSProg.uniLocs.lightPos = pointLightSProg.getUniVar("lightPos")->getLoc();
+	pointLightSProg.uniLocs.lightInvRadius = pointLightSProg.getUniVar("lightInvRadius")->getLoc();
+	pointLightSProg.uniLocs.lightDiffuseCol = pointLightSProg.getUniVar("lightDiffuseCol")->getLoc();
+	pointLightSProg.uniLocs.lightSpecularCol = pointLightSProg.getUniVar("lightSpecularCol")->getLoc();
 
 	spotLightNoShadowSProg.customLoad( "shaders/is_lp_generic.glsl", "#define _SPOT_LIGHT_\n" );
-	spotLightNoShadowSProg.uniLocs.msNormalFai = spotLightNoShadowSProg.getUniVar("msNormalFai").getLoc();
-	spotLightNoShadowSProg.uniLocs.msDiffuseFai = spotLightNoShadowSProg.getUniVar("msDiffuseFai").getLoc();
-	spotLightNoShadowSProg.uniLocs.msSpecularFai = spotLightNoShadowSProg.getUniVar("msSpecularFai").getLoc();
-	spotLightNoShadowSProg.uniLocs.msDepthFai = spotLightNoShadowSProg.getUniVar("msDepthFai").getLoc();
-	spotLightNoShadowSProg.uniLocs.planes = spotLightNoShadowSProg.getUniVar("planes").getLoc();
-	spotLightNoShadowSProg.uniLocs.lightPos = spotLightNoShadowSProg.getUniVar("lightPos").getLoc();
-	spotLightNoShadowSProg.uniLocs.lightInvRadius = spotLightNoShadowSProg.getUniVar("lightInvRadius").getLoc();
-	spotLightNoShadowSProg.uniLocs.lightDiffuseCol = spotLightNoShadowSProg.getUniVar("lightDiffuseCol").getLoc();
-	spotLightNoShadowSProg.uniLocs.lightSpecularCol = spotLightNoShadowSProg.getUniVar("lightSpecularCol").getLoc();
-	spotLightNoShadowSProg.uniLocs.lightTex = spotLightNoShadowSProg.getUniVar("lightTex").getLoc();
-	spotLightNoShadowSProg.uniLocs.texProjectionMat = spotLightNoShadowSProg.getUniVar("texProjectionMat").getLoc();
+	spotLightNoShadowSProg.uniLocs.msNormalFai = spotLightNoShadowSProg.getUniVar("msNormalFai")->getLoc();
+	spotLightNoShadowSProg.uniLocs.msDiffuseFai = spotLightNoShadowSProg.getUniVar("msDiffuseFai")->getLoc();
+	spotLightNoShadowSProg.uniLocs.msSpecularFai = spotLightNoShadowSProg.getUniVar("msSpecularFai")->getLoc();
+	spotLightNoShadowSProg.uniLocs.msDepthFai = spotLightNoShadowSProg.getUniVar("msDepthFai")->getLoc();
+	spotLightNoShadowSProg.uniLocs.planes = spotLightNoShadowSProg.getUniVar("planes")->getLoc();
+	spotLightNoShadowSProg.uniLocs.lightPos = spotLightNoShadowSProg.getUniVar("lightPos")->getLoc();
+	spotLightNoShadowSProg.uniLocs.lightInvRadius = spotLightNoShadowSProg.getUniVar("lightInvRadius")->getLoc();
+	spotLightNoShadowSProg.uniLocs.lightDiffuseCol = spotLightNoShadowSProg.getUniVar("lightDiffuseCol")->getLoc();
+	spotLightNoShadowSProg.uniLocs.lightSpecularCol = spotLightNoShadowSProg.getUniVar("lightSpecularCol")->getLoc();
+	spotLightNoShadowSProg.uniLocs.lightTex = spotLightNoShadowSProg.getUniVar("lightTex")->getLoc();
+	spotLightNoShadowSProg.uniLocs.texProjectionMat = spotLightNoShadowSProg.getUniVar("texProjectionMat")->getLoc();
 
 	spotLightShadowSProg.customLoad( "shaders/is_lp_generic.glsl", "#define _SPOT_LIGHT_\n#define _SHADOW_\n" );
-	spotLightShadowSProg.uniLocs.msNormalFai = spotLightShadowSProg.getUniVar("msNormalFai").getLoc();
-	spotLightShadowSProg.uniLocs.msDiffuseFai = spotLightShadowSProg.getUniVar("msDiffuseFai").getLoc();
-	spotLightShadowSProg.uniLocs.msSpecularFai = spotLightShadowSProg.getUniVar("msSpecularFai").getLoc();
-	spotLightShadowSProg.uniLocs.msDepthFai = spotLightShadowSProg.getUniVar("msDepthFai").getLoc();
-	spotLightShadowSProg.uniLocs.planes = spotLightShadowSProg.getUniVar("planes").getLoc();
-	spotLightShadowSProg.uniLocs.lightPos = spotLightShadowSProg.getUniVar("lightPos").getLoc();
-	spotLightShadowSProg.uniLocs.lightInvRadius = spotLightShadowSProg.getUniVar("lightInvRadius").getLoc();
-	spotLightShadowSProg.uniLocs.lightDiffuseCol = spotLightShadowSProg.getUniVar("lightDiffuseCol").getLoc();
-	spotLightShadowSProg.uniLocs.lightSpecularCol = spotLightShadowSProg.getUniVar("lightSpecularCol").getLoc();
-	spotLightShadowSProg.uniLocs.lightTex = spotLightShadowSProg.getUniVar("lightTex").getLoc();
-	spotLightShadowSProg.uniLocs.texProjectionMat = spotLightShadowSProg.getUniVar("texProjectionMat").getLoc();
-	spotLightShadowSProg.uniLocs.shadowMap = spotLightShadowSProg.getUniVar("shadowMap").getLoc();
+	spotLightShadowSProg.uniLocs.msNormalFai = spotLightShadowSProg.getUniVar("msNormalFai")->getLoc();
+	spotLightShadowSProg.uniLocs.msDiffuseFai = spotLightShadowSProg.getUniVar("msDiffuseFai")->getLoc();
+	spotLightShadowSProg.uniLocs.msSpecularFai = spotLightShadowSProg.getUniVar("msSpecularFai")->getLoc();
+	spotLightShadowSProg.uniLocs.msDepthFai = spotLightShadowSProg.getUniVar("msDepthFai")->getLoc();
+	spotLightShadowSProg.uniLocs.planes = spotLightShadowSProg.getUniVar("planes")->getLoc();
+	spotLightShadowSProg.uniLocs.lightPos = spotLightShadowSProg.getUniVar("lightPos")->getLoc();
+	spotLightShadowSProg.uniLocs.lightInvRadius = spotLightShadowSProg.getUniVar("lightInvRadius")->getLoc();
+	spotLightShadowSProg.uniLocs.lightDiffuseCol = spotLightShadowSProg.getUniVar("lightDiffuseCol")->getLoc();
+	spotLightShadowSProg.uniLocs.lightSpecularCol = spotLightShadowSProg.getUniVar("lightSpecularCol")->getLoc();
+	spotLightShadowSProg.uniLocs.lightTex = spotLightShadowSProg.getUniVar("lightTex")->getLoc();
+	spotLightShadowSProg.uniLocs.texProjectionMat = spotLightShadowSProg.getUniVar("texProjectionMat")->getLoc();
+	spotLightShadowSProg.uniLocs.shadowMap = spotLightShadowSProg.getUniVar("shadowMap")->getLoc();
 
 
 	// init the rest
@@ -403,7 +403,7 @@ static void PointLightPass( const Camera& cam, const PointLight& light )
 	glEnableVertexAttribArray( 0 );
 	glEnableVertexAttribArray( 1 );
 
-	glVertexAttribPointer( 0, 2, GL_FLOAT, false, 0, &R::quad_vert_cords[0] );
+	glVertexAttribPointer( 0, 2, GL_FLOAT, false, 0, &R::quadVertCoords[0] );
 	glVertexAttribPointer( 1, 3, GL_FLOAT, false, 0, &viewVectors[0] );
 
 	glDrawArrays( GL_QUADS, 0, 4 );
@@ -496,7 +496,7 @@ static void SpotLightPass( const Camera& cam, const SpotLight& light )
 	glEnableVertexAttribArray( 0 );
 	glEnableVertexAttribArray( 1 );
 
-	glVertexAttribPointer( 0, 2, GL_FLOAT, false, 0, &R::quad_vert_cords[0] );
+	glVertexAttribPointer( 0, 2, GL_FLOAT, false, 0, &R::quadVertCoords[0] );
 	glVertexAttribPointer( 1, 3, GL_FLOAT, false, 0, &viewVectors[0] );
 
 	glDrawArrays( GL_QUADS, 0, 4 );

+ 5 - 5
src/Renderer/Pps.cpp

@@ -69,27 +69,27 @@ void init()
 	sProg.customLoad( "shaders/Pps.glsl" );
 	sProg.bind();
 
-	sProg.uniLocs.isFai = sProg.getUniVar( "isFai" ).getLoc();
+	sProg.uniLocs.isFai = sProg.getUniVar( "isFai" )->getLoc();
 
 	if( R::Pps::Ssao::enabled )
 	{
 		R::Pps::Ssao::init();
-		sProg.uniLocs.ppsSsaoFai = sProg.getUniVar( "ppsSsaoFai" ).getLoc();
+		sProg.uniLocs.ppsSsaoFai = sProg.getUniVar( "ppsSsaoFai" )->getLoc();
 	}
 
 	if( R::Pps::Hdr::enabled )
 	{
 		R::Pps::Hdr::init();
-		sProg.uniLocs.hdrFai = sProg.getUniVar( "ppsHdrFai" ).getLoc();
+		sProg.uniLocs.hdrFai = sProg.getUniVar( "ppsHdrFai" )->getLoc();
 	}
 
 	if( R::Pps::edgeaa::enabled )
-		sProg.uniLocs.msNormalFai = sProg.getUniVar( "msNormalFai" ).getLoc();
+		sProg.uniLocs.msNormalFai = sProg.getUniVar( "msNormalFai" )->getLoc();
 
 	if( R::Pps::Lscatt::enabled )
 	{
 		R::Pps::Lscatt::init();
-		sProg.uniLocs.lscattFai = sProg.getUniVar( "ppsLscattFai" ).getLoc();
+		sProg.uniLocs.lscattFai = sProg.getUniVar( "ppsLscattFai" )->getLoc();
 	}
 
 }

+ 3 - 3
src/Renderer/PpsHdr.cpp

@@ -87,15 +87,15 @@ void init()
 	// init shaders
 	if( !pass0SProg.customLoad( "shaders/PpsHdr.glsl", ("#define _PPS_HDR_PASS_0_\n#define IS_FAI_WIDTH " + Util::floatToStr(R::w) + "\n").c_str() ) )
 		FATAL( "See prev error" );
-	pass0SProg.uniLocs.fai = pass0SProg.getUniVar("fai").getLoc();
+	pass0SProg.uniLocs.fai = pass0SProg.getUniVar("fai")->getLoc();
 
 	if( !pass1SProg.customLoad( "shaders/PpsHdr.glsl", ("#define _PPS_HDR_PASS_1_\n#define PASS0_HEIGHT " + Util::floatToStr(h) + "\n").c_str() ) )
 		FATAL( "See prev error" );
-	pass1SProg.uniLocs.fai = pass1SProg.getUniVar("fai").getLoc();
+	pass1SProg.uniLocs.fai = pass1SProg.getUniVar("fai")->getLoc();
 
 	if( !pass2SProg.customLoad( "shaders/PpsHdr.glsl", "#define _PPS_HDR_PASS_2_\n" ) )
 		FATAL( "See prev error" );
-	pass2SProg.uniLocs.fai = pass2SProg.getUniVar("fai").getLoc();
+	pass2SProg.uniLocs.fai = pass2SProg.getUniVar("fai")->getLoc();
 }
 
 

+ 3 - 3
src/Renderer/PpsLscatt.cpp

@@ -63,8 +63,8 @@ void init()
 
 	// init shaders
 	sProg.customLoad( "shaders/PpsLscatt.glsl" );
-	msDepthFaiUniLoc = sProg.getUniVar( "msDepthFai" ).getLoc();
-	isFaiUniLoc = sProg.getUniVar( "isFai" ).getLoc();
+	msDepthFaiUniLoc = sProg.getUniVar( "msDepthFai" )->getLoc();
+	isFaiUniLoc = sProg.getUniVar( "isFai" )->getLoc();
 }
 
 
@@ -93,7 +93,7 @@ void runPass( const Camera& cam )
 	p = cam.getProjectionMatrix() * (cam.getViewMatrix() * p);
 	p /= p.w;
 	p = p/2 + 0.5;
-	glUniform2fv( sProg.getUniVar("lightPosScreenSpace").getLoc(), 1, &p[0] );
+	glUniform2fv( sProg.getUniVar("lightPosScreenSpace")->getLoc(), 1, &p[0] );
 
 	// Draw quad
 	R::DrawQuad( 0 );

+ 6 - 6
src/Renderer/PpsSsao.cpp

@@ -161,10 +161,10 @@ void runPass( const Camera& cam )
 
 	// fill SSAO FAI
 	ssaoSProg.bind();
-	glUniform2fv( ssaoSProg.getUniVar("camerarange").getLoc(), 1, &(Vec2(cam.getZNear(), cam.getZFar()))[0] );
-	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("msDepthFai").getLoc(), R::Ms::depthFai, 0 );
-	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("noiseMap").getLoc(), *noiseMap, 1 );
-	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("msNormalFai").getLoc(), R::Ms::normalFai, 2 );
+	glUniform2fv( ssaoSProg.getUniVar("camerarange")->getLoc(), 1, &(Vec2(cam.getZNear(), cam.getZFar()))[0] );
+	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("msDepthFai")->getLoc(), R::Ms::depthFai, 0 );
+	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("noiseMap")->getLoc(), *noiseMap, 1 );
+	ssaoSProg.locTexUnit( ssaoSProg.getUniVar("msNormalFai")->getLoc(), R::Ms::normalFai, 2 );
 	R::DrawQuad( 0 ); // Draw quad
 
 	/*glBindFramebuffer( GL_READ_FRAMEBUFFER, pass0Fbo.getGlId() );
@@ -176,13 +176,13 @@ void runPass( const Camera& cam )
 	// second pass. blur
 	pass1Fbo.bind();
 	blurSProg.bind();
-	blurSProg.locTexUnit( blurSProg.getUniVar("tex").getLoc(), pass0Fai, 0 );
+	blurSProg.locTexUnit( blurSProg.getUniVar("tex")->getLoc(), pass0Fai, 0 );
 	R::DrawQuad( 0 ); // Draw quad
 
 	// third pass. blur
 	pass2Fbo.bind();
 	blurSProg2.bind();
-	blurSProg2.locTexUnit( blurSProg2.getUniVar("tex").getLoc(), pass1Fai, 0 );
+	blurSProg2.locTexUnit( blurSProg2.getUniVar("tex")->getLoc(), pass1Fai, 0 );
 	R::DrawQuad( 0 ); // Draw quad
 
 

+ 8 - 8
src/Renderer/Renderer.cpp

@@ -22,13 +22,13 @@ uint framesNum = 0;
 float aspectRatio;
 
 int maxColorAtachments = 0;
-//float renderingQuality = 1.0;
+float renderingQuality = 1.0;
 int screenshotJpegQuality = 90;
 
 static ShaderProg* shdr_final;
 
 // for the pps and is quad rendering
-float quad_vert_cords [][2] = { {1.0,1.0}, {0.0,1.0}, {0.0,0.0}, {1.0,0.0} };
+float quadVertCoords [][2] = { {1.0,1.0}, {0.0,1.0}, {0.0,0.0}, {1.0,0.0} };
 
 
 /**
@@ -39,7 +39,7 @@ string std_shader_preproc_defines;
 
 // texture
 bool mipmaping = true;
-int max_anisotropy = 8;
+int maxAnisotropy = 8;
 int maxTextureUnits = -1;
 bool textureCompression = false;
 
@@ -50,10 +50,10 @@ bool textureCompression = false;
 void DrawQuad( int vertCoords_uni_loc )
 {
 	/*glEnableClientState( GL_VERTEX_ARRAY );
-	glVertexPointer( 2, GL_FLOAT, 0, quad_vert_cords );
+	glVertexPointer( 2, GL_FLOAT, 0, quadVertCoords );
 	glDrawArrays( GL_QUADS, 0, 4 );
 	glDisableClientState( GL_VERTEX_ARRAY );*/
-	glVertexAttribPointer( vertCoords_uni_loc, 2, GL_FLOAT, false, 0, quad_vert_cords );
+	glVertexAttribPointer( vertCoords_uni_loc, 2, GL_FLOAT, false, 0, quadVertCoords );
 	glEnableVertexAttribArray( vertCoords_uni_loc );
 	glDrawArrays( GL_QUADS, 0, 4 );
 	glDisableVertexAttribArray( vertCoords_uni_loc );
@@ -132,8 +132,8 @@ void init()
 	if( !glewIsSupported("GL_ARB_vertex_buffer_object") )
 		WARNING( "Vertex Buffer Objects not supported. The application may crash (and burn)" );
 
-	w = app->getWindowWidth() /* * renderingQuality*/;
-	h = app->getWindowHeight() /* * renderingQuality*/;
+	w = app->getWindowWidth() * renderingQuality;
+	h = app->getWindowHeight() * renderingQuality;
 	aspectRatio = float(w)/h;
 
 	glClearColor( 0.1, 0.1, 0.1, 0.0 );
@@ -205,7 +205,7 @@ void render( const Camera& cam )
 	glDisable( GL_BLEND );
 
 	shdr_final->bind();
-	shdr_final->locTexUnit( shdr_final->getUniVar("rasterImage").getLoc(), R::Pps::fai, 0 );
+	shdr_final->locTexUnit( shdr_final->getUniVar("rasterImage")->getLoc(), R::Pps::fai, 0 );
 
 	/*const int step = 100;
 	if( R::framesNum < step )

+ 6 - 6
src/Renderer/Renderer.h

@@ -17,20 +17,20 @@ class Camera;
 namespace R { // begin namespace
 
 
-extern uint  w; ///< width of the rendering window
-extern uint  h; ///< height of the rendering window
-//extern float renderingQuality; ///< The global rendering quality of the raster image. From 0.0(low) to 1.0(high)
+extern uint  w; ///< width of the rendering. Dont confuse with the window width
+extern uint  h; ///< height of the rendering. Dont confuse with the window width
+extern float renderingQuality; ///< The global rendering quality of the raster image. From 0.0(low) to 1.0(high)
 extern uint  framesNum;
 extern float aspectRatio;
 extern int   screenshotJpegQuality; ///< The quality of the JPEG screenshots. From 0 to 100
 
-extern int  maxColorAtachments; ///< Max color atachements a FBO can accept
+extern int  maxColorAtachments; ///< Max color attachments a FBO can accept
 
 // texture stuff
 extern bool textureCompression; ///< Used in Texture::load to enable texture compression. Decreases video memory usage
 extern int  maxTextureUnits; ///< Used in Texture::bind so we wont bind in a nonexistent texture unit. Readonly
 extern bool mipmaping; ///< Used in Texture::load. Enables mipmaping increases video memory usage
-extern int  max_anisotropy; ///< Max texture anisotropy. Used in Texture::load
+extern int  maxAnisotropy; ///< Max texture anisotropy. Used in Texture::load
 
 // misc
 extern void takeScreenshot( const char* filename ); ///< Save the colorbuffer as 24bit uncompressed TGA image
@@ -41,7 +41,7 @@ extern void printLastError(); ///< prints last OpenGL error
 inline const string& getStdShaderPreprocDefines() { extern string std_shader_preproc_defines; return std_shader_preproc_defines; }
 extern void render( const Camera& cam ); ///< The spine function of the renderer
 
-extern float quad_vert_cords [][2];
+extern float quadVertCoords [][2];
 extern void DrawQuad( int vertCoords_uni_loc );
 
 // matrices

+ 120 - 0
src/Renderer2/Renderer.hpp

@@ -0,0 +1,120 @@
+#ifndef _RENDERER_HPP_
+#define _RENDERER_HPP_
+
+#include "Common.h"
+#include "Math.h"
+
+class Camera;
+class PointLight;
+class SpotLight;
+
+
+/**
+ * @todo write
+ *
+ * @note Because of the many members of the class there is a naming convention that helps
+ * - MS: material stage
+ * - IS: illumination stage
+ * - SM: shadowmapping
+ * - AP: ambient pass
+ * - PLS: point light pass
+ * - SLS: spot light pass
+ * - PPS: preprocessing stage
+ * - HDR: high dynamic range lighting
+ * - SSAO: screen space ambient occlusion
+ * - LScat: light scattering
+ * - FAI: frame buffer attachable image
+ */
+class Renderer
+{
+	public:
+		// quality
+		uint  width; ///< width of the rendering. Dont confuse with the window width
+		uint  height; ///< height of the rendering. Dont confuse with the window width
+		float renderingQuality; ///< The global rendering quality of the raster image. From 0.0(low) to 1.0(high)
+		int   screenshotJpegQuality; ///< The quality of the JPEG screenshots. From 0 to 100
+		// texture stuff
+		bool textureCompression; ///< Used in Texture::load to enable texture compression. Decreases video memory usage
+		int  maxTextureUnits; ///< Used in Texture::bind so we wont bind in a nonexistent texture unit. Readonly
+		bool mipmaping; ///< Used in Texture::load. Enables mipmaping increases video memory usage
+		int  maxAnisotropy; ///< Max texture anisotropy. Used in Texture::load
+		// other
+		int   maxColorAtachments; ///< Max color attachments a FBO can accept
+		uint  framesNum;
+		float aspectRatio;
+		// matrices & viewing
+		Camera* crntCamera;
+		Mat4 modelViewMat; ///< This changes once for every mesh rendering
+		Mat4 projectionMat; ///< This changes once every frame
+		Mat4 modelViewProjectionMat; ///< This changes just like @ref modelViewMat
+		Mat3 normalMat; ///< The rotation part of modelViewMat
+
+	//===================================================================================================================================
+	// Material Stage                                                                                                                   =
+	//===================================================================================================================================
+	private:
+		Fbo msFbo;
+
+		void initMs();
+		void runMs();
+
+	public:
+		Texture normalMsFai;
+		Texture diffuseMsFai;
+		Texture specularMsFai;
+		Texture depthMsFai;
+
+	//===================================================================================================================================
+	// Illumination Stage                                                                                                               =
+	//===================================================================================================================================
+	private:
+		Fbo isFbo;
+		uint stencilRb; ///< Illumination stage stencil buffer
+		ShaderProg apIsSProg; ///< Illumination stage ambient pass shader program
+		ShaderProg plIsSProg; ///< Illumination stage point light shader program
+		ShaderProg slIsSProg; ///< Illumination stage spot light w/o shadow shader program
+		ShaderProg slSIsSProg; ///< Illumination stage spot light w/ shadow shader program
+		Vec3 viewVectors[4];
+		Vec2 planes;
+		static float sMOUvSCoords []; ///< Illumination stage stencil masking optimizations UV sphere vertex coords
+		static uint  sMOUvSVboId; ///< Illumination stage stencil masking optimizations UV sphere VBO id
+
+		static void initSMOUvS(); ///< Init the illumination stage stencil masking optimizations uv sphere (eg create the @ref sMOUvSVboId VBO)
+		void renderSMOUvS( const PointLight& light ); ///< Render the illumination stage stencil masking optimizations uv sphere
+		void calcViewVector(); ///< Calc the view vector that we will use inside the shader to calculate the frag pos in view space
+		void calcPlanes(); ///< Calc the planes that we will use inside the shader to calculate the frag pos in view space
+		void setStencilMask( const PointLight& light );
+		void setStencilMask( const SpotLight& light );
+		void ambientPass( const Vec3& color );
+		void pointLightPass( const PointLight& light );
+		void spotLightPass( const SpotLight& light );
+		void initIsFbo();
+		void initIs();
+		void runIs();
+
+	public:
+		Texture isFai;
+
+	//===================================================================================================================================
+	// Illumination Stage Shadowmapping                                                                                                 =
+	//===================================================================================================================================
+	private:
+		Fbo smFbo; ///< Illumination stage shadowmapping FBO
+		Texture shadowMap;
+
+		void initSm();
+
+	public:
+		bool smPcfEnabled;
+		bool smBilinearEnabled;
+		int  smResolution;
+};
+
+#endif
+
+
+
+
+
+
+

+ 10 - 10
src/Resources/Material.cpp

@@ -224,7 +224,7 @@ bool Material::load( const char* filename )
 					return false;
 				}
 
-				var.sProgVar = & shaderProg->getUniVar( varName.c_str() );
+				var.sProgVar = shaderProg->getUniVar( varName.c_str() );
 
 				// read the values
 				switch( var.sProgVar->getGlDataType() )
@@ -317,19 +317,19 @@ bool Material::additionalInit()
 	}
 
 	// init the attribute locations
-	attribLocs.tanget = shaderProg->attribVarExists( "tangent" ) ?  shaderProg->getAttribVar( "tangent" ).getLoc() : -1;
-	attribLocs.position = shaderProg->attribVarExists( "position" ) ?  shaderProg->getAttribVar( "position" ).getLoc() : -1;
-	attribLocs.normal = shaderProg->attribVarExists( "normal" ) ?  shaderProg->getAttribVar( "normal" ).getLoc() : -1;
-	attribLocs.texCoords = shaderProg->attribVarExists( "texCoords" ) ?  shaderProg->getAttribVar( "texCoords" ).getLoc() : -1;
+	attribLocs.tanget = shaderProg->attribVarExists( "tangent" ) ?  shaderProg->getAttribVar( "tangent" )->getLoc() : -1;
+	attribLocs.position = shaderProg->attribVarExists( "position" ) ?  shaderProg->getAttribVar( "position" )->getLoc() : -1;
+	attribLocs.normal = shaderProg->attribVarExists( "normal" ) ?  shaderProg->getAttribVar( "normal" )->getLoc() : -1;
+	attribLocs.texCoords = shaderProg->attribVarExists( "texCoords" ) ?  shaderProg->getAttribVar( "texCoords" )->getLoc() : -1;
 
 	// vertex weights
 	if( shaderProg->attribVarExists( "vertWeightBonesNum" ) )
 	{
-		attribLocs.vertWeightBonesNum = shaderProg->getAttribVar( "vertWeightBonesNum" ).getLoc();
-		attribLocs.vertWeightBoneIds = shaderProg->getAttribVar( "vertWeightBoneIds" ).getLoc();
-		attribLocs.vertWeightWeights = shaderProg->getAttribVar( "vertWeightWeights" ).getLoc();
-		uniLocs.skinningRotations = shaderProg->getUniVar( "skinningRotations" ).getLoc();
-		uniLocs.skinningTranslations = shaderProg->getUniVar( "skinningTranslations" ).getLoc();
+		attribLocs.vertWeightBonesNum = shaderProg->getAttribVar( "vertWeightBonesNum" )->getLoc();
+		attribLocs.vertWeightBoneIds = shaderProg->getAttribVar( "vertWeightBoneIds" )->getLoc();
+		attribLocs.vertWeightWeights = shaderProg->getAttribVar( "vertWeightWeights" )->getLoc();
+		uniLocs.skinningRotations = shaderProg->getUniVar( "skinningRotations" )->getLoc();
+		uniLocs.skinningTranslations = shaderProg->getUniVar( "skinningTranslations" )->getLoc();
 	}
 	else
 	{

+ 4 - 4
src/Resources/Resource.cpp

@@ -15,11 +15,11 @@ namespace Rsrc {
 DATA OBJECTS                                                                                                                          =
 =======================================================================================================================================
 */
-Container<Texture>     textures;
+Container<Texture>    textures;
 Container<ShaderProg> shaders;
-Container<Material>    materials;
-Container<Mesh>        meshes;
-Container<Skeleton>    skeletons;
+Container<Material>   materials;
+Container<Mesh>       meshes;
+Container<Skeleton>   skeletons;
 Container<SkelAnim>   skelAnims;
 Container<LightProps> lightProps;
 

+ 5 - 1
src/Resources/Resource.h

@@ -40,7 +40,11 @@ class Resource
 	friend class ShaderProg;
 
 	public:
-		virtual bool load( const char* ) = 0;
+		/**
+		 * @param filename The file to load
+		 * @return True on success
+		 */
+		virtual bool load( const char* filename ) = 0;
 		virtual void unload() = 0;
 
 		Resource(): usersNum(0) {}

+ 7 - 7
src/Resources/ShaderProg.cpp

@@ -227,30 +227,30 @@ bool ShaderProg::customLoad( const char* filename, const char* extraSource )
 //=====================================================================================================================================
 // getUniVar                                                                                                                          =
 //=====================================================================================================================================
-const ShaderProg::Var& ShaderProg::getUniVar( const char* name ) const
+const ShaderProg::Var* ShaderProg::getUniVar( const char* name ) const
 {
 	NameToVarIterator it = uniNameToVar.find( name );
 	if( it == uniNameToVar.end() )
 	{
 		SHADER_ERROR( "Cannot get uniform loc \"" << name << '\"' );
-		return dummyVar;
+		return NULL;
 	}
-	return *(it->second);
+	return it->second;
 }
 
 
 //=====================================================================================================================================
 // getAttribVar                                                                                                                       =
 //=====================================================================================================================================
-const ShaderProg::Var& ShaderProg::getAttribVar( const char* name ) const
+const ShaderProg::Var* ShaderProg::getAttribVar( const char* name ) const
 {
 	NameToVarIterator it = attribNameToVar.find( name );
 	if( it == attribNameToVar.end() )
 	{
 		SHADER_ERROR( "Cannot get attribute loc \"" << name << '\"' );
-		return dummyVar;
+		return NULL;
 	}
-	return *(it->second);
+	return it->second;
 }
 
 
@@ -289,5 +289,5 @@ void ShaderProg::locTexUnit( const char* loc, const Texture& tex, uint tex_unit
 {
 	DEBUG_ERR( getCurrentProgramGlId() != glId );
 	tex.bind( tex_unit );
-	glUniform1i( getUniVar(loc).getLoc(), tex_unit );
+	glUniform1i( getUniVar(loc)->getLoc(), tex_unit );
 }

+ 3 - 4
src/Resources/ShaderProg.h

@@ -50,7 +50,6 @@ class ShaderProg: public Resource
 				{}
 		};
 
-		Var dummyVar; ///< Returned on error
 		Vec<Var> uniVars;
 		Vec<Var> attribVars;
 		map<string,Var*> uniNameToVar;  ///< A map for quick searching
@@ -63,7 +62,7 @@ class ShaderProg: public Resource
 		bool link(); ///< Link the shader prog
 		
 	public:
-		ShaderProg(): glId(0), dummyVar(-1, "dummyVar", 0, 0) {}
+		ShaderProg(): glId(0) {}
 		virtual ~ShaderProg() {}
 		
 		inline void bind() const { DEBUG_ERR( glId==0 ); glUseProgram(glId); }
@@ -81,8 +80,8 @@ class ShaderProg: public Resource
 		 * @param varName The name of the var
 		 * @return It returns a uniform variable and on failure it throws an error and returns something random
 		 */
-		const Var& getUniVar( const char* varName ) const;
-		const Var& getAttribVar( const char* varName ) const; ///< @see getUniVar
+		const Var* getUniVar( const char* varName ) const;
+		const Var* getAttribVar( const char* varName ) const; ///< @see getUniVar
 		bool uniVarExists( const char* varName ) const;
 		bool attribVarExists( const char* varName ) const;
 

+ 1 - 1
src/Resources/Texture.cpp

@@ -323,7 +323,7 @@ bool Texture::load( const char* filename )
 
 	glTexParameteri( type, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
 
-	glTexParameterf( type, GL_TEXTURE_MAX_ANISOTROPY_EXT, R::max_anisotropy );
+	glTexParameterf( type, GL_TEXTURE_MAX_ANISOTROPY_EXT, R::maxAnisotropy );
 
 	// leave to GL_REPEAT. There is not real performace impact
 	glTexParameteri( type, GL_TEXTURE_WRAP_S, GL_REPEAT );

+ 1 - 1
src/Ui/Ui.cpp

@@ -38,7 +38,7 @@ static funcs
 static void SetGL()
 {
 	shader->bind();
-	shader->locTexUnit( shader->getUniVar("fontMap").getLoc(), *fontMap, 0 );
+	shader->locTexUnit( shader->getUniVar("fontMap")->getLoc(), *fontMap, 0 );
 
 	glEnable( GL_BLEND );
 	glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );

+ 10 - 4
src/Util/App.cpp

@@ -137,18 +137,24 @@ void App::waitForNextFrame()
 //=====================================================================================================================================
 // printAppInfo                                                                                                                       =
 //=====================================================================================================================================
+#if !defined( REVISION )
+	#define REVISION "unknown"
+#endif
+
 void App::printAppInfo()
 {
 	stringstream msg;
-	msg << "App info: ";
+	msg << "App info: debugging ";
 	#if defined( _DEBUG_ )
-		msg << "Debug, ";
+		msg << "on, ";
 	#else
-		msg << "Release, ";
+		msg << "off, ";
 	#endif
 	msg << "GLEW " << glewGetString(GLEW_VERSION) << ", ";
 	const SDL_version* v = SDL_Linked_Version();
-	msg << "SDL " << int(v->major) << '.' << int(v->minor) << '.' << int(v->patch);
+	msg << "SDL " << int(v->major) << '.' << int(v->minor) << '.' << int(v->patch) << ", ";
+	msg << "build date " __DATE__ << ", ";
+	msg << "rev " << REVISION;
 
 	INFO( msg.str() )
 }

+ 1 - 1
src/Util/Common.h

@@ -93,7 +93,7 @@ extern string getFunctionFromPrettyFunction( const char* pretty_function );
 #ifdef _DEBUG_
 	#define DEBUG_ERR( x ) \
 		if( x ) \
-			GENERAL_ERR( "Debug err", #x, COL_DEBUG_ERR )
+			GENERAL_ERR( "Debug Err", #x, COL_DEBUG_ERR )
 #else
     #define DEBUG_ERR( x )
 #endif

+ 0 - 0
src/Tokenizer/Parser.h → src/Util/Tokenizer/Parser.h


+ 5 - 5
src/Tokenizer/Scanner.cpp → src/Util/Tokenizer/Scanner.cpp

@@ -236,21 +236,21 @@ void Scanner::getAllPrintAll()
 //=====================================================================================================================================
 bool Scanner::loadFile( const char* filename_ )
 {	
-	inFstream.open( filename_, ios::in );
+	inFstream.open( filename_ );
 	if( !inFstream.good() )
 	{
 		ERROR( "Cannot open file \"" << filename_ << '\"' );
 		return false;
 	}
 	
-	return loadIoStream( &inFstream, filename_ );
+	return loadIstream( inFstream, filename_ );
 }
 
 
 //=====================================================================================================================================
-// loadIoStream                                                                                                                       =
+// loadIstream                                                                                                                       =
 //=====================================================================================================================================
-bool Scanner::loadIoStream( iostream* iostream_, const char* scriptName_ )
+bool Scanner::loadIstream( istream& istream_, const char* scriptName_ )
 {
 	if( inStream != NULL )
 	{
@@ -258,7 +258,7 @@ bool Scanner::loadIoStream( iostream* iostream_, const char* scriptName_ )
 		return false;
 	}
 
-	inStream = iostream_;
+	inStream = &istream_;
 
 	// init globals
 	DEBUG_ERR( strlen(scriptName_) > sizeof(scriptName)/sizeof(char) - 1 ) // Too big name

+ 3 - 3
src/Tokenizer/Scanner.h → src/Util/Tokenizer/Scanner.h

@@ -175,8 +175,8 @@ class Scanner
 		int   commentedLines;
 
 		// input
-		fstream   inFstream; ///< The file stream. Used if the @ref Scanner is initiated using @ref loadFile
-		iostream* inStream; ///< Points to either @ref inFstream or an external std::iostream
+		ifstream  inFstream; ///< The file stream. Used if the @ref Scanner is initiated using @ref loadFile
+		istream*  inStream; ///< Points to either @ref inFstream or an external std::istream
 		char      scriptName[64]; ///< The name of the input stream. Mostly used for the error messages inside the @ref Scanner
 
 	//===================================================================================================================================
@@ -191,7 +191,7 @@ class Scanner
 		~Scanner() { /* The destructor does NOTHING. The class does not make any mem allocations */ }
 
 		bool loadFile( const char* filename ); ///< Load a file to extract tokens
-		bool loadIoStream( iostream* iostream_, const char* scriptName_ = "unamed-iostream" ); ///< Load a STL iostream to extract tokens
+		bool loadIstream( istream& iostream_, const char* scriptName_ = "unamed-istream" ); ///< Load a STL iostream to extract tokens
 		void unload();
 
 		static void   printTokenInfo( const Token& token ); ///< Print info of the given token