Main.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include "anki/input/Input.h"
  5. #include "anki/Math.h"
  6. #include "anki/renderer/Renderer.h"
  7. #include "anki/core/App.h"
  8. #include "anki/resource/Mesh.h"
  9. #include "anki/resource/Material.h"
  10. #include "anki/resource/SkelAnim.h"
  11. #include "anki/physics/Character.h"
  12. #include "anki/renderer/Renderer.h"
  13. #include "anki/renderer/MainRenderer.h"
  14. #include "anki/physics/Character.h"
  15. #include "anki/physics/RigidBody.h"
  16. #include "anki/script/ScriptManager.h"
  17. #include "anki/core/StdinListener.h"
  18. #include "anki/resource/Model.h"
  19. #include "anki/core/Logger.h"
  20. #include "anki/Util.h"
  21. #include "anki/resource/Skin.h"
  22. #include "anki/event/EventManager.h"
  23. #include "anki/event/MainRendererPpsHdrEvent.h"
  24. #include "anki/resource/ShaderProgramPrePreprocessor.h"
  25. #include "anki/resource/Material.h"
  26. #include "anki/core/ThreadPool.h"
  27. #include "anki/core/NativeWindow.h"
  28. #include "anki/Scene.h"
  29. #include <android_native_app_glue.h>
  30. #include <android/log.h>
  31. using namespace anki;
  32. //==============================================================================
  33. void initSubsystems(android_app* app)
  34. {
  35. U glmajor = 3, glminor = 0;
  36. // App
  37. AppSingleton::get().init(app);
  38. // Util
  39. File::setAndroidAssetManager(app->activity->assetManager);
  40. // Window
  41. NativeWindowInitializer nwinit;
  42. nwinit.width = 1280;
  43. nwinit.height = 720;
  44. nwinit.majorVersion = glmajor;
  45. nwinit.minorVersion = glminor;
  46. nwinit.depthBits = 0;
  47. nwinit.stencilBits = 0;
  48. nwinit.fullscreenDesktopRez = true;
  49. nwinit.debugContext = false;
  50. NativeWindowSingleton::get().create(nwinit);
  51. // GL stuff
  52. GlStateCommonSingleton::get().init(glmajor, glminor, nwinit.debugContext);
  53. // Input
  54. InputSingleton::get().init(&NativeWindowSingleton::get());
  55. InputSingleton::get().lockCursor(true);
  56. InputSingleton::get().hideCursor(true);
  57. InputSingleton::get().moveCursor(Vec2(0.0));
  58. // Main renderer
  59. RendererInitializer initializer;
  60. initializer.ms.ez.enabled = false;
  61. initializer.ms.ez.maxObjectsToDraw = 100;
  62. initializer.dbg.enabled = false;
  63. initializer.is.sm.bilinearEnabled = true;
  64. initializer.is.groundLightEnabled = true;
  65. initializer.is.sm.enabled = true;
  66. initializer.is.sm.pcfEnabled = false;
  67. initializer.is.sm.resolution = 512;
  68. initializer.pps.enabled = true;
  69. initializer.pps.hdr.enabled = true;
  70. initializer.pps.hdr.renderingQuality = 0.5;
  71. initializer.pps.hdr.blurringDist = 1.0;
  72. initializer.pps.hdr.blurringIterationsCount = 1;
  73. initializer.pps.hdr.exposure = 8.0;
  74. initializer.pps.ssao.blurringIterationsNum = 1;
  75. initializer.pps.ssao.enabled = true;
  76. initializer.pps.ssao.mainPassRenderingQuality = 0.35;
  77. initializer.pps.ssao.blurringRenderingQuality = 0.35;
  78. initializer.pps.bl.enabled = true;
  79. initializer.pps.bl.blurringIterationsNum = 2;
  80. initializer.pps.bl.sideBlurFactor = 1.0;
  81. initializer.pps.lf.enabled = true;
  82. initializer.pps.sharpen = true;
  83. initializer.renderingQuality = 1.0;
  84. initializer.width = NativeWindowSingleton::get().getWidth();
  85. initializer.height = NativeWindowSingleton::get().getHeight();
  86. initializer.lodDistance = 20.0;
  87. initializer.samples = 16;
  88. #if ANKI_GL == ANKI_GL_ES
  89. initializer.samples = 1;
  90. initializer.pps.enabled = false;
  91. initializer.is.maxPointLights = 64;
  92. initializer.is.maxPointLightsPerTile = 4;
  93. initializer.is.maxSpotLightsPerTile = 4;
  94. initializer.is.maxSpotTexLightsPerTile = 4;
  95. #endif
  96. MainRendererSingleton::get().init(initializer);
  97. // Stdin listener
  98. StdinListenerSingleton::get().start();
  99. // Parallel jobs
  100. ThreadPoolSingleton::get().init(getCpuCoresCount());
  101. }
  102. //==============================================================================
  103. void android_main(struct android_app* app)
  104. {
  105. app_dummy();
  106. try
  107. {
  108. initSubsystems(app);
  109. AppSingleton::get().mainLoop();
  110. ANKI_LOGI("Exiting...");
  111. abort();
  112. }
  113. catch(std::exception& e)
  114. {
  115. ANKI_LOGE("Aborting: %s", e.what());
  116. }
  117. ANKI_LOGI("Bye!!");
  118. }