Browse Source

Added bled window based off of testap

akal 9 years ago
parent
commit
bfda9ca6b0
2 changed files with 312 additions and 0 deletions
  1. 2 0
      bled/CMakeLists.txt
  2. 310 0
      bled/Main.cpp

+ 2 - 0
bled/CMakeLists.txt

@@ -0,0 +1,2 @@
+ADD_EXECUTABLE(bled Main.cpp)
+TARGET_LINK_LIBRARIES(bled anki)

+ 310 - 0
bled/Main.cpp

@@ -0,0 +1,310 @@
+#include <stdio.h>
+#include <iostream>
+#include <fstream>
+
+#ifdef ANKI_BUILD
+#undef ANKI_BUILD
+#endif
+
+#include "anki/AnKi.h"
+
+using namespace anki;
+
+#define PLAYER 0
+#define MOUSE 1
+
+class MyApp : public App
+{
+public:
+	Bool m_profile = false;
+
+	Error init();
+	Error userMainLoop(Bool& quit) override;
+};
+
+MyApp* app = nullptr;
+
+//==============================================================================
+Error MyApp::init()
+{
+	Error err = ErrorCode::NONE;
+	ANKI_LOGI("Other init...");
+
+	SceneGraph& scene = app->getSceneGraph();
+	MainRenderer& renderer = app->getMainRenderer();
+	ResourceManager& resources = app->getResourceManager();
+
+	renderer.getOffscreenRenderer().getVolumetric().setFog(
+		Vec3(1.0, 0.9, 0.9), 0.7);
+	if(getenv("PROFILE"))
+	{
+		m_profile = true;
+		app->setTimerTick(0.0);
+	}
+
+	{
+		ScriptResourcePtr script;
+
+		// ANKI_CHECK(resources.loadResource("maps/hell/scene.lua", script));
+		ANKI_CHECK(resources.loadResource("data/map/scene.lua", script));
+		if(err)
+			return err;
+
+		err = app->getScriptManager().evalString(script->getSource());
+		if(err)
+			return err;
+
+		app->getMainRenderer()
+			.getOffscreenRenderer()
+			.getPps();
+			// .loadColorGradingTexture("textures/adis/dungeon.ankitex");
+	}
+
+	return ErrorCode::NONE;
+}
+
+//==============================================================================
+Error MyApp::userMainLoop(Bool& quit)
+{
+	Error err = ErrorCode::NONE;
+	F32 dist = 0.1;
+	F32 ang = toRad(2.5);
+	F32 scale = 0.01;
+	F32 mouseSensivity = 9.0;
+	quit = false;
+
+	SceneGraph& scene = getSceneGraph();
+	Input& in = getInput();
+	MainRenderer& renderer = getMainRenderer();
+
+	if(in.getKey(KeyCode::ESCAPE))
+	{
+		quit = true;
+		return err;
+	}
+
+	// move the camera
+	static MoveComponent* mover =
+		&scene.getActiveCamera().getComponent<MoveComponent>();
+
+	if(in.getKey(KeyCode::_1))
+	{
+		mover = scene.getActiveCamera().tryGetComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_2))
+	{
+		mover = &scene.findSceneNode("proxy").getComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_3))
+	{
+		mover = &scene.findSceneNode("spot0").getComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_4))
+	{
+		mover = &scene.findSceneNode("spot1").getComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_5))
+	{
+		mover = &scene.findSceneNode("pe").getComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_6))
+	{
+		mover = &scene.findSceneNode("shape0").getComponent<MoveComponent>();
+	}
+	if(in.getKey(KeyCode::_7))
+	{
+		mover = &scene.findSceneNode("shape1").getComponent<MoveComponent>();
+	}
+
+	if(in.getKey(KeyCode::L) == 1)
+	{
+		Vec3 origin = mover->getWorldTransform().getOrigin().xyz();
+		printf("%f %f %f\n", origin.x(), origin.y(), origin.z());
+	}
+
+	if(in.getKey(KeyCode::F1) == 1)
+	{
+		renderer.getDbg().setEnabled(!renderer.getDbg().getEnabled());
+	}
+	if(in.getKey(KeyCode::F2) == 1)
+	{
+		renderer.getDbg().flipFlags(DbgFlag::SPATIAL_COMPONENT);
+	}
+	if(in.getKey(KeyCode::F3) == 1)
+	{
+		renderer.getDbg().flipFlags(DbgFlag::PHYSICS);
+	}
+	if(in.getKey(KeyCode::F4) == 1)
+	{
+		renderer.getDbg().flipFlags(DbgFlag::SECTOR_COMPONENT);
+	}
+	if(in.getKey(KeyCode::F6) == 1)
+	{
+		renderer.getDbg().switchDepthTestEnabled();
+	}
+	if(in.getKey(KeyCode::F12) == 1)
+	{
+		printf("F12\n");
+		scene.getActiveCamera()
+			.getComponent<FrustumComponent>()
+			.markShapeForUpdate();
+		scene.getActiveCamera()
+			.getComponent<FrustumComponent>()
+			.markTransformForUpdate();
+	}
+
+#if !PLAYER
+	if(in.getKey(KeyCode::UP))
+		mover->rotateLocalX(ang);
+	if(in.getKey(KeyCode::DOWN))
+		mover->rotateLocalX(-ang);
+	if(in.getKey(KeyCode::LEFT))
+		mover->rotateLocalY(ang);
+	if(in.getKey(KeyCode::RIGHT))
+		mover->rotateLocalY(-ang);
+
+	if(in.getKey(KeyCode::A))
+	{
+		mover->moveLocalX(-dist);
+	}
+	if(in.getKey(KeyCode::D))
+		mover->moveLocalX(dist);
+	if(in.getKey(KeyCode::Z))
+		mover->moveLocalY(dist);
+	if(in.getKey(KeyCode::SPACE))
+		mover->moveLocalY(-dist);
+	if(in.getKey(KeyCode::W))
+		mover->moveLocalZ(-dist);
+	if(in.getKey(KeyCode::S))
+		mover->moveLocalZ(dist);
+	if(in.getKey(KeyCode::Q))
+		mover->rotateLocalZ(ang);
+	if(in.getKey(KeyCode::E))
+		mover->rotateLocalZ(-ang);
+	if(in.getKey(KeyCode::PAGEUP))
+	{
+		mover->scale(scale);
+	}
+	if(in.getKey(KeyCode::PAGEDOWN))
+	{
+		mover->scale(-scale);
+	}
+#endif
+
+#if !PLAYER && MOUSE
+	if(in.getMousePosition() != Vec2(0.0) && !m_profile)
+	{
+		// printf("%f %f\n", in.getMousePosition().x(),
+		// in.getMousePosition().y());
+
+		F32 angY = -ang * in.getMousePosition().x() * mouseSensivity
+			* renderer.getAspectRatio();
+
+		mover->rotateLocalY(angY);
+		mover->rotateLocalX(ang * in.getMousePosition().y() * mouseSensivity);
+	}
+#endif
+
+	if(m_profile && getGlobalTimestamp() == 500)
+	{
+		quit = true;
+		return err;
+	}
+
+	return err;
+}
+
+//==============================================================================
+Error init(int argc, char* argv[])
+{
+	Error err = ErrorCode::NONE;
+
+	// Config
+	Config config;
+	config.set("dbg.enabled", false);
+	config.set("sm.bilinearEnabled", true);
+	config.set("is.groundLightEnabled", false);
+	config.set("sm.enabled", true);
+	config.set("sm.maxLights", 16);
+	config.set("sm.poissonEnabled", false);
+	config.set("sm.resolution", 512);
+	config.set("lf.maxFlares", 32);
+	config.set("pps.enabled", true);
+	config.set("bloom.enabled", true);
+	config.set("bloom.renderingQuality", 0.5);
+	config.set("bloom.blurringDist", 1.0);
+	config.set("bloom.blurringIterationsCount", 1);
+	config.set("bloom.threshold", 2.0);
+	config.set("bloom.scale", 2.0);
+	config.set("bloom.samples", 17);
+	config.set("ssao.blurringIterationsCount", 1);
+	config.set("ssao.enabled", true);
+	config.set("ssao.renderingQuality", 0.25);
+	config.set("sslf.enabled", true);
+	config.set("pps.sharpen", false);
+	config.set("renderingQuality", 1.0);
+	config.set("width", 1920);
+	config.set("height", 1088);
+	config.set("lodDistance", 20.0);
+	config.set("samples", 1);
+	config.set("tessellation", true);
+	// config.set("maxTextureSize", 256);
+	config.set("ir.enabled", true);
+	// config.set("ir.clusterSizeZ", 32);
+	config.set("sslr.enabled", false);
+	config.set("ir.rendererSize", 64);
+	config.set("fullscreenDesktopResolution", true);
+	// config.set("clusterSizeZ", 16);
+	config.set("debugContext", false);
+	if(getenv("ANKI_DATA_PATH"))
+	{
+		config.set("dataPaths", getenv("ANKI_DATA_PATH"));
+	}
+	else
+	{
+		config.set("dataPaths", "assets");
+	}
+	// config.set("maxTextureSize", 256);
+	// config.set("lodDistance", 3.0);
+
+	// config.saveToFile("./config.xml");
+	// config.loadFromFile("./config.xml");
+
+	app = new MyApp;
+	ANKI_CHECK(app->create(config, allocAligned, nullptr));
+	ANKI_CHECK(app->init());
+
+// Input
+#if MOUSE
+	app->getInput().lockCursor(true);
+	app->getInput().hideCursor(true);
+	app->getInput().moveCursor(Vec2(0.0));
+#endif
+
+	return err;
+}
+
+//==============================================================================
+int main(int argc, char* argv[])
+{
+	Error err = ErrorCode::NONE;
+
+	err = init(argc, argv);
+
+	if(!err)
+	{
+		err = app->mainLoop();
+	}
+
+	if(err)
+	{
+		ANKI_LOGE("Error reported. See previous messages");
+	}
+	else
+	{
+		delete app;
+		ANKI_LOGI("Bye!!");
+	}
+
+	return 0;
+}