Commit Graph

45 Commits (359e748c28671700cd6ed98eef096928f54f9491)

Author SHA1 Message Date
Andrei Kortunov 359e748c28 Initialize some missing fields in constructors 6 years ago
scrawl 3e03a0d7bd Terrain: remove ref argument that is now always true 7 years ago
scrawl ac78d01b2b Terrain: use the main camera's viewpoint for intersection tests
Fixes lag spikes caused by intersection tests loading/unloading terrain pages.
7 years ago
scrawl 5044816770 Remove unused code 7 years ago
scrawl db00d47ca2 Hold a ref to the intersection visitor's view if possible 7 years ago
scrawl 4baa795152 Add preloading implementation to QuadTreeWorld 7 years ago
scrawl bb991850da Add LOD stitches 7 years ago
scrawl 8c151364df Add special handling for CullVisitor to QuadTreeWorld.
- Cull only against bounding box, not bounding sphere, as this appears to perform better.
- Also traverse into non visible nodes to compute their LOD, this is to avoid nodes having to be loaded in when the player turns the view around, and will avoid unnecessary refs/unrefs of rendering data in the View. This should probably be turned off at some point for static cameras, such as the local maps.
7 years ago
scrawl f19a88be9d Reject QuadTreeNodes with invalid bounds 7 years ago
scrawl 7d004bf757 Preliminary rendering of QuadTreeWorld 7 years ago
scrawl ce8c4ad4f5 Add quad tree implementation (no rendering yet) 7 years ago
scrawl cdd0623009 Terrain rendering 9 years ago
Rohit Nirmal 997347b01e Silence -Wreorder warnings. 9 years ago
dteviot e197f5318b fixing MSVC 2013 warning C4244: & C4305
conversion from 'const float' to 'int', possible loss of data
conversion from 'double' to 'int', possible loss of data
conversion from 'float' to 'int', possible loss of data
9 years ago
jacmoe ee574e08ef MIT License header added to all terrain component files. 9 years ago
scrawl f7bac58b39 Terrain: change index buffer flags to unsigned 9 years ago
scrawl eda296f1e3 Remove workaround for Ogre 1.8 (no longer supported) 10 years ago
scrawl e25fa6c157 Refactor non-distant land terrain path to a grid based implementation (Fixes #1562) 10 years ago
scrawl c018319940 Addition to 7c9c0830a96: don't create useless BaseWhite clones 10 years ago
scrawl b0a1e1198a Yet another terrain fix 10 years ago
scrawl a9dcc90970 Another terrain fix 10 years ago
scrawl b8ca067730 Small fix for terrain 10 years ago
scrawl d0f98103e4 Terrain: re-added "distant land=off" path
Still a hack, but the overhead of building and traversing the quad tree appears negligible.
10 years ago
scrawl 1d926816b5 Terrain: background load blendmaps & layer textures. Refactor QuadTree update. 10 years ago
scrawl 97c3efb3ba Terrain: decoupled Chunk from QuadTreeNode. 10 years ago
scrawl edb5a54092 Include some more required Ogre headers explicitely. 10 years ago
scrawl 195071efc7 Terrain: geometry is now loaded in background threads.
TODO: background load layer textures and blendmaps.
"Distant land" setting has been removed for now (i.e. always enabled).
10 years ago
scrawl b3fed853ae Terrain: take cell world size into account for LOD selection 10 years ago
scrawl 6c863486e1 Terrain: fix an embarrassing copy&paste mistake. 10 years ago
scrawl c9e349f60f Terrain: support alternate coordinate systems. Get rid of LoadingListener for now 10 years ago
scrawl d4a755d1aa Fix some hardcoded literals 10 years ago
scrawl c6fb0f2d9b Removed terrain component's dependency on ESM 10 years ago
scrawl a1ac99463f Fix an uninitialized value 10 years ago
Lukasz Gromanowski 60fb75b03a Fixed valgrind warning about uninitialized variable:
==16814== Conditional jump or move depends on uninitialised value(s)
==16814==    at 0xA945B8: Terrain::QuadTreeNode::update(Ogre::Vector3 const&, Loading::Listener*) (quadtreenode.cpp:269)
==16814==    by 0xA94A77: Terrain::QuadTreeNode::update(Ogre::Vector3 const&, Loading::Listener*) (quadtreenode.cpp:354)
==16814==    by 0xA77541: Terrain::World::update(Ogre::Vector3 const&) (world.cpp:159)
==16814==    by 0x6EBA17: MWRender::RenderingManager::requestMap(MWWorld::CellStore*) (renderingmanager.cpp:649)
==16814==    by 0x8A25C4: MWWorld::Scene::loadCell(MWWorld::CellStore*, Loading::Listener*) (scene.cpp:157)
==16814==    by 0x8A2CEA: MWWorld::Scene::changeCell(int, int, ESM::Position const&, bool) (scene.cpp:296)
==16814==    by 0x8A2DE0: MWWorld::Scene::changeToExteriorCell(ESM::Position const&) (scene.cpp:440)
==16814==    by 0x85AC17: MWWorld::World::changeToExteriorCell(ESM::Position const&) (worldimp.cpp:761)
==16814==    by 0x927E38: OMW::Engine::prepareEngine(Settings::Manager&) (engine.cpp:436)
==16814==    by 0x92843D: OMW::Engine::go() (engine.cpp:483)
==16814==    by 0x6C6B3F: main (main.cpp:279)
==16814==  Uninitialised value was created by a heap allocation
==16814==    at 0x4C27CC2: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16814==    by 0xA93E60: Terrain::QuadTreeNode::createChild(Terrain::ChildDirection, float, Ogre::Vector2 const&) (quadtreenode.cpp:178)
==16814==    by 0xA7733E: Terrain::World::buildQuadTree(Terrain::QuadTreeNode*) (world.cpp:139)
==16814==    by 0xA76B18: Terrain::World::World(Loading::Listener*, Ogre::SceneManager*, Terrain::Storage*, int, bool, bool) (world.cpp:94)
==16814==    by 0x6EC6EB: MWRender::RenderingManager::enableTerrain(bool) (renderingmanager.cpp:1013)
==16814==    by 0x8A2A00: MWWorld::Scene::changeCell(int, int, ESM::Position const&, bool) (scene.cpp:206)
==16814==    by 0x8A2DE0: MWWorld::Scene::changeToExteriorCell(ESM::Position const&) (scene.cpp:440)
==16814==    by 0x85AC17: MWWorld::World::changeToExteriorCell(ESM::Position const&) (worldimp.cpp:761)
==16814==    by 0x927E38: OMW::Engine::prepareEngine(Settings::Manager&) (engine.cpp:436)
==16814==    by 0x92843D: OMW::Engine::go() (engine.cpp:483)
==16814==    by 0x6C6B3F: main (main.cpp:279)

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
11 years ago
scrawl 69c0bb1723 Add normal, specular & parallax mapping for terrain 11 years ago
scrawl 188df341c3 Replaced log2 to make VC happy 11 years ago
scrawl 839d251cc5 Renamed Terrain::Terrain to Terrain::World to make VC happy 11 years ago
scrawl d3d6dfbde8 Refactored loading screen
- Add loading progress for data files, global map, terrain
 - Refactored and improved cell loading progress
11 years ago
scrawl 43313437dc Fix composite map for cells without land data 11 years ago
scrawl ce5ea6d7d2 Use a proper node hierarchy; disconnect the root when entering interior 11 years ago
scrawl fa76d1631b Some terrain fixes 11 years ago
scrawl 8c8653160d Crash fix, material fix 11 years ago
scrawl b92da9ae93 Neighbour fix 11 years ago
scrawl ebf9debb80 Enabled terrain self shadows, implemented getHeightAt, some optimizations 11 years ago
scrawl e27437f8ed New terrain renderer - improvements:
- Consistent triangle alignment, fixes a noticable crack near the census and excise office. Note that alignment is still not the same as vanilla. Vanilla uses a weird diagonal pattern. I hope there aren't more trouble spots that will force us to replicate vanilla, but at least we can do that now.
 - Fixes several blending issues and cell border seams
 - Fix map render to use the terrain bounding box instead of an arbitrary height
 - Different LODs are now properly connected instead of using skirts
 - Support self shadowing
 - Normals and colors are stored in the vertices instead of a texture, this enables per-vertex lighting which should improve performance, fix compatibility issues due to the PS getting too large and mimic vanilla better
 - Support a fixed function fallback (though the splatting shader usually performs better)
 - Designed for distant land support - test: https://www.youtube.com/watch?v=2wnd9EuPJIY - we can't really enable this yet due to depth precision issues when using a large view distance
11 years ago