Hydrax 0.5 released!

Xavyiy

27-02-2009 22:19:36

The new 0.5 version is now avaible!
Download links at: http://www.ogre3d.org/wiki/index.php/Hydrax

P.D.: I'm going to update wiki and forum with information about the new 0.5 version features this weekend

Xavi

FerretallicA

28-02-2009 00:10:28

Compiles first go! :D Woohoooo

FerretallicA

28-02-2009 00:26:42

You might want to update the part of the Wiki about "this forum thread". It still points to:
http://www.ogre3d.org/forums/viewtopic.php?t=38148

scratchyrice

28-02-2009 02:17:19

Awesome! Thanks a lot xavi! Very good work, as usual. I will implement it into my engine sometime today.

Cheers

Scratchy

guru

28-02-2009 11:22:01

Working fine here, I get 100+ fps on winxp x64 and an 8800gt at 1920x1200 :D

scratchyrice

28-02-2009 11:30:31

Working fine here, I get 100+ fps on winxp x64 and an 8800gt at 1920x1200
Seriously? What CPU have you got? I only get about 55fps in the demo, On an 8800GTS640MB at only 1280x1024.

Quorthon3D

28-02-2009 11:42:19

Good!

Still c::b isn't compiling :(. But now appears one error :D.

first defineInfo||resolving Ogre::StringUtil::BLANK by linking to __imp___ZN4Ogre10StringUtil5BLANKE (auto-import)|

FerretallicA

01-03-2009 03:21:28

There's one thing I'd like to suggest for the >=0.6 roadmap...

Try going underwater and positioning the camera so a tree is directly between the camera and the sun. The sun glare goes through everything and it is most apparent when you do something like this.
I'm not sure if this is something you'd want to factor into Hydrax or something developers using your library should worry about on a case-by-case basis, just thought it's worth mentioning as it's the only thing which stands out as being less than exemplary.

Xavyiy

01-03-2009 09:34:29

@FerretallicA
You can enable the god rays object intersections option, just use: GodRaysManager::setObjectIntersectionsEnabled(...), this render a little depth map using the god rays frustum and uses the information to check if the god ray is intersected by an object.
As same as with Hydrax depth technique, you've to add the god rays depth technique to all object that aren't Ogre::Entity, [GodRaysManager::addDepthTechnique(...)]

Xavi

guru

01-03-2009 17:54:46

Working fine here, I get 100+ fps on winxp x64 and an 8800gt at 1920x1200
Seriously? What CPU have you got? I only get about 55fps in the demo, On an 8800GTS640MB at only 1280x1024.


I just ran it again just to make sure. I get between 83 fps (when moving around while looking directly at all the palms and the island) and 112 fps with about 100 being the norm. I don't have any fsaa activated. I have an intel dualcore with 3 ghz (E8400) and 4gb of DDR2-800, the 8800gt has 512mb.

exploder

04-03-2009 14:24:36

Congratulations!
You have worked hard!!
if the Hydrax is managed by SVN, e.g ,positioned in sf.net or code.google.com, that is easy updating. :)

DarkHorizon

05-03-2009 00:33:50

Good!

Still c::b isn't compiling :(. But now appears one error :D.

first defineInfo||resolving Ogre::StringUtil::BLANK by linking to __imp___ZN4Ogre10StringUtil5BLANKE (auto-import)|


I, too, am having this problem.

I'm using Ogre SDK 1.6.0, getting the error above, as well the Code::Blocks project includes Structs.cpp and Structs.h, neither of which are included in the Hydrax download.

Compiling the Hydrax DLL generates a libHydrax.a, but no Hydrax.dll to be found due to the linker error above.

Any help is appreciated!

nargil

05-03-2009 01:04:10

I'd say you need to put
const Ogre::String Ogre::StringUtil::BLANK = "";
into one of your cpp files (as a global variable). Does not matter which cpp file, but do it only once (only in one cpp file).

DarkHorizon

05-03-2009 02:32:26

I'd say you need to put
const Ogre::String Ogre::StringUtil::BLANK = "";
into one of your cpp files (as a global variable). Does not matter which cpp file, but do it only once (only in one cpp file).


I added the following lines (as the linker complained about both) into Hydrax.cpp:
const Ogre::String Ogre::StringUtil::BLANK = "";
const Ogre::Vector3 Ogre::Vector3::UNIT_Z;


Compiled fine, and linked as per below; Hydrax.dll was NOT generated (libHydrax.a was generated).

Build log:

-------------- Build: Release in Hydrax ---------------
Linking dynamic library: bin\release\Hydrax.dll
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x0): multiple definition of `Hydrax::Hydrax::isComponent(Hydrax::HydraxComponent const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x40): multiple definition of `Hydrax::Hydrax::remove()'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x40): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0xe0): multiple definition of `Hydrax::Hydrax::setPolygonMode(Ogre::PolygonMode const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0xe0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1a0): multiple definition of `Hydrax::Hydrax::setShaderMode(Hydrax::MaterialManager::ShaderMode const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1a0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x220): multiple definition of `Hydrax::Hydrax::setPlanesError(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x220): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x230): multiple definition of `Hydrax::Hydrax::DeviceListener::eventOccurred(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x230): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x270): multiple definition of `Hydrax::Hydrax::setCausticsEnd(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x270): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x440): multiple definition of `Hydrax::Hydrax::setCausticsPower(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x440): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x8a0): multiple definition of `Hydrax::Hydrax::setCausticsScale(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x8a0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0xa70): multiple definition of `Hydrax::Hydrax::setSmoothPower(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0xa70): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0xc40): multiple definition of `Hydrax::Hydrax::setDepthLimit(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0xc40): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0xe30): multiple definition of `Hydrax::Hydrax::setFoamTransparency(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0xe30): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1150): multiple definition of `Hydrax::Hydrax::setFoamStart(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1150): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1470): multiple definition of `Hydrax::Hydrax::setFoamScale(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1470): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1790): multiple definition of `Hydrax::Hydrax::setFoamMaxDistance(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1790): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1ab0): multiple definition of `Hydrax::Hydrax::setSunColor(Ogre::Vector3 const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1ab0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x1e20): multiple definition of `Hydrax::Hydrax::setSunArea(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x1e20): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x2140): multiple definition of `Hydrax::Hydrax::setSunStrength(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x2140): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x2460): multiple definition of `Hydrax::Hydrax::setSunPosition(Ogre::Vector3 const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x2460): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x2860): multiple definition of `Hydrax::Hydrax::setNormalDistortion(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x2860): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x2b30): multiple definition of `Hydrax::Hydrax::setWaterColor(Ogre::Vector3 const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x2b30): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x3400): multiple definition of `Hydrax::Hydrax::setGlobalTransparency(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x3400): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x36d0): multiple definition of `Hydrax::Hydrax::setFullReflectionDistance(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x36d0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x39a0): multiple definition of `Hydrax::Hydrax::_setStrength(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x39a0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x3d00): multiple definition of `Hydrax::Hydrax::rotate(Ogre::Quaternion const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x3d00): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x4000): multiple definition of `Hydrax::Hydrax::setPosition(Ogre::Vector3 const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x4000): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x4280): multiple definition of `Hydrax::Hydrax::setModule(Hydrax::Module::Module*, bool const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x4280): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x56e0): multiple definition of `Hydrax::Hydrax::setComponents(Hydrax::HydraxComponent const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x56e0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x7300): multiple definition of `Hydrax::Hydrax::~Hydrax()'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x7300): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x77c0): multiple definition of `Hydrax::Hydrax::~Hydrax()'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x77c0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x7c80): multiple definition of `Hydrax::Hydrax::Hydrax(Ogre::SceneManager*, Ogre::Camera*, Ogre::Viewport*)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x7c80): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x8350): multiple definition of `Hydrax::Hydrax::Hydrax(Ogre::SceneManager*, Ogre::Camera*, Ogre::Viewport*)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x8350): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x8a20): multiple definition of `Hydrax::Hydrax::_checkUnderwater(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x8a20): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x9790): multiple definition of `Hydrax::Hydrax::update(float const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x9790): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x9800): multiple definition of `Hydrax::Hydrax::_checkVisible()'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x9800): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x99a0): multiple definition of `Hydrax::Hydrax::setVisible(bool const&)'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x99a0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.text+0x99c0): multiple definition of `Hydrax::Hydrax::create()'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.text+0x99c0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.bss+0x0): multiple definition of `Ogre::Vector3::UNIT_Z'
obj\Release\src\Hydrax\Hydrax.o:hydrax.cpp:(.bss+0x0): first defined here
obj\Release\src\Hydrax\hydrax.o:hydrax.cpp:(.bss+0xc): multiple definition of `Ogre::StringUtil::BLANK'
obj\Release\src\Hydrax\Hydrax.oInfo: resolving Ogre::Quaternion::IDENTITY by linking to __imp___ZN4Ogre10Quaternion8IDENTITYE (auto-import)
Info: resolving Ogre::Vector3::ZERO by linking to __imp___ZN4Ogre7Vector34ZEROE (auto-import)
Info: resolving Ogre::Math::fDeg2Rad by linking to __imp___ZN4Ogre4Math8fDeg2RadE (auto-import)
Info: resolving Ogre::Vector3::NEGATIVE_UNIT_X by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_XE (auto-import)
Info: resolving Ogre::Vector3::NEGATIVE_UNIT_Z by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_ZE (auto-import)
Info: resolving Ogre::ColourValue::White by linking to __imp___ZN4Ogre11ColourValue5WhiteE (auto-import)
Info: resolving Ogre::Vector2::ZERO by linking to __imp___ZN4Ogre7Vector24ZEROE (auto-import)
Info: resolving Ogre::ColourValue::Red by linking to __imp___ZN4Ogre11ColourValue3RedE (auto-import)
Info: resolving vtable for Ogre::MeshPtrby linking to __imp___ZTVN4Ogre7MeshPtrE (auto-import)
Info: resolving Ogre::Math::TWO_PI by linking to __imp___ZN4Ogre4Math6TWO_PIE (auto-import)
Info: resolving Ogre::Math::PI by linking to __imp___ZN4Ogre4Math2PIE (auto-import)
Info: resolving Ogre::Vector3::NEGATIVE_UNIT_Y by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_YE (auto-import)
Info: resolving Ogre::ColourValue::Black by linking to __imp___ZN4Ogre11ColourValue5BlackE (auto-import)
Info: resolving Ogre::Vector3::UNIT_Y by linking to __imp___ZN4Ogre7Vector36UNIT_YE (auto-import)
Creating library file: bin\release\libHydrax.a
:hydrax.cpp:(.bss+0xc): first defined here
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 3 seconds)
0 errors, 0 warnings


Should ld not return with 0?

DarkHorizon

05-03-2009 02:57:48

Further adventures...

I rebuilt the Hydrax library as a static lib, which results in the following linker errors:
||Info: resolving Ogre::Vector3::ZERO by linking to __imp___ZN4Ogre7Vector34ZEROE |
||Info: resolving Ogre::Quaternion::IDENTITY by linking to __imp___ZN4Ogre10Quaternion8IDENTITYE |
||Info: resolving Ogre::ColourValue::White by linking to __imp___ZN4Ogre11ColourValue5WhiteE |
||Info: resolving Ogre::Vector3::NEGATIVE_UNIT_Z by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_ZE |
||Info: resolving Ogre::Math::fDeg2Rad by linking to __imp___ZN4Ogre4Math8fDeg2RadE |
||Info: resolving vtable for Ogre::Exceptionby linking to __imp___ZTVN4Ogre9ExceptionE |
||Info: resolving Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME by linking to __imp___ZN4Ogre20ResourceGroupManager27DEFAULT_RESOURCE_GROUP_NAMEE |
||Info: resolving MyGUI::ResourceManager::GUIResourceGroupName by linking to __imp___ZN5MyGUI15ResourceManager20GUIResourceGroupNameE |
||Info: resolving Ogre::Vector3::NEGATIVE_UNIT_Y by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_YE |
||Info: resolving Ogre::SceneManager::WORLD_GEOMETRY_TYPE_MASK by linking to __imp___ZN4Ogre12SceneManager24WORLD_GEOMETRY_TYPE_MASKE |
||Info: resolving Ogre::Vector3::UNIT_Y by linking to __imp___ZN4Ogre7Vector36UNIT_YE |
||Info: resolving Ogre::ColourValue::Blue by linking to __imp___ZN4Ogre11ColourValue4BlueE |
||Info: resolving Ogre::ColourValue::Black by linking to __imp___ZN4Ogre11ColourValue5BlackE |
||Info: resolving Ogre::Vector3::UNIT_SCALE by linking to __imp___ZN4Ogre7Vector310UNIT_SCALEE |
||Info: resolving Ogre::Vector3::UNIT_X by linking to __imp___ZN4Ogre7Vector36UNIT_XE |
||Info: resolving Ogre::Math::PI by linking to __imp___ZN4Ogre4Math2PIE |
||Info: resolving vtable for Ogre::MeshPtrby linking to __imp___ZTVN4Ogre7MeshPtrE |
||Info: resolving Ogre::StringInterface::msDictionary by linking to __imp___ZN4Ogre15StringInterface12msDictionaryE |
||Info: resolving Ogre::Math::POS_INFINITY by linking to __imp___ZN4Ogre4Math12POS_INFINITYE |
||Info: resolving Ogre::Math::NEG_INFINITY by linking to __imp___ZN4Ogre4Math12NEG_INFINITYE |
||Info: resolving Ogre::Math::TWO_PI by linking to __imp___ZN4Ogre4Math6TWO_PIE |
||Info: resolving Ogre::Math::fRad2Deg by linking to __imp___ZN4Ogre4Math8fRad2DegE |
||Info: resolving Ogre::Matrix4::IDENTITY by linking to __imp___ZN4Ogre7Matrix48IDENTITYE |
||Info: resolving Ogre::Vector2::ZERO by linking to __imp___ZN4Ogre7Vector24ZEROE |
||Info: resolving Ogre::ColourValue::Red by linking to __imp___ZN4Ogre11ColourValue3RedE |
||Info: resolving Ogre::Vector3::NEGATIVE_UNIT_X by linking to __imp___ZN4Ogre7Vector315NEGATIVE_UNIT_XE |
obj\Release\Water.o:Water.cpp:(.text+0xbd)||undefined reference to `_imp___ZN6Hydrax6Hydrax14setSunPositionERKN4Ogre7Vector3E'|
obj\Release\Water.o:Water.cpp:(.text+0xdf)||undefined reference to `_imp___ZN6Hydrax6Hydrax11setSunColorERKN4Ogre7Vector3E'|
obj\Release\Water.o:Water.cpp:(.text+0x11d)||undefined reference to `_imp___ZN6Hydrax6Hydrax13setWaterColorERKN4Ogre7Vector3E'|
obj\Release\Water.o:Water.cpp:(.text+0x201)||undefined reference to `_imp___ZN6Hydrax6HydraxC1EPN4Ogre12SceneManagerEPNS1_6CameraEPNS1_8ViewportE'|
obj\Release\Water.o:Water.cpp:(.text+0x24e)||undefined reference to `_imp___ZN6Hydrax5Noise6PerlinC1Ev'|
obj\Release\Water.o:Water.cpp:(.text+0x316)||undefined reference to `_imp___ZN6Hydrax6Module13ProjectedGridC1EPNS_6HydraxEPNS_5Noise5NoiseERKN4Ogre5PlaneERKNS_15MaterialManager10NormalModeERKNS1_7OptionsE'|
obj\Release\Water.o:Water.cpp:(.text+0x353)||undefined reference to `_imp___ZN6Hydrax6Hydrax9setModuleEPNS_6Module6ModuleERKb'|
obj\Release\Water.o:Water.cpp:(.text+0x3bc)||undefined reference to `_imp___ZNK6Hydrax14CfgFileManager4loadERKSs'|
obj\Release\Water.o:Water.cpp:(.text+0x411)||undefined reference to `_imp___ZN6Hydrax6Hydrax6createEv'|
||=== Build finished: 9 errors, 0 warnings ===|

scratchyrice

25-03-2009 08:08:18

@okokart6 dude, This is a serious community. Go place ur bullshite ads somewhere else.

Dekker3D

13-06-2009 19:16:38

i'm having this problem too. could anyone who knows more about linking etcetera help me? i'd appreciate it a lot!