Horde3D http://horde3d.org/forums/ |
|
Horde3D on Mac OS X [Partial Success] http://horde3d.org/forums/viewtopic.php?f=1&t=192 |
Page 1 of 5 |
Author: | swiftcoder [ 22.11.2007, 21:31 ] |
Post subject: | Horde3D on Mac OS X [Partial Success] |
Horde compiles for OS X with changes to only a singe file - I was very impressed, seeing as it hasn't been officially ported yet! As you can see from the screenshot, the samples compile and run too (after I stripped out the windows specific code in Horde3DUtils.h/.cpp). However, they only run if I comment out the forward light loop in the pipeline xml configuration: Code: <!-- <DoForwardLightLoop class="~Translucent" /> --> This works for both the Knight and Chicago samples, but in both cases disables lighting. In the the Knight sample, it is as if lighting were disabled, and the scene is displayed anyway, but in Chicago, the entire scene is black (but it is fine in debug view). I also tried the deferred system for Chicago, and while that didn't crash, it still yielded no light. When the forward light loop is left in, both of the samples crash with an invalid pointer, deep inside the implementation of glDrawRangeElements() called from line 571 of egRenderer.cpp: Code: // Render
glDrawRangeElements( GL_TRIANGLES, meshNode->getVertRStart(), meshNode->getVertREnd(), meshNode->getBatchCount(), curGeoRes->_16BitIndices ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT, (char *)0 + meshNode->getBatchStart() * (curGeoRes->_16BitIndices ? sizeof( short ) : sizeof( int )) ); I am very happy to have managed to get Horde compiling, and even running, but I would be even happier if anyone has ideas on what is wrong with the lighting loop. http://picasaweb.google.com/swiftcoder/Developer/photo#5135759776338128594 PS - if anyone is interested, I am willing to package up binaries (or the project files if you would rather) and upload them, once we have this working, to ease the process a bit. |
Author: | marciano [ 23.11.2007, 16:55 ] |
Post subject: | |
First off, it is great to see that you are working on a Mac port and have done good progress. Thanks for that Obviously the crash is happening in the driver when the geometry is drawn. There are several possible reasons: - It could be an evil driver bug - It could be a bug in Horde which didn't show up in Windows and Linux yet - It could be a some problem which is introduced by the different system environment on Macs Honestly a crash in this function is the worst case for debugging because the reason could be anywhere in the OpenGL related code. Recently we had a similar problem with some random crashes under Windows on NVidia cards. After some debugging we found out that they were related to the shader vertex attribute bindings. I could fix that for 0.13 but I'm still not a hundred percent convinced that this was a bug in the Horde code. Might be it is something similar now under Mac. The only way I know to debug such diffuse bugs is to locate the problematic area by minimizing step-by-step the code which could cause the problems. I would begin by reducing the number of lights to one and putting just one simple object to the scene. After that I would try to remove shadow mapping and so on. I know this not the preferred way of debugging but what else should you do? Unfortunately I don't have a Mac so I can't really help to find the problem. |
Author: | swiftcoder [ 24.11.2007, 13:54 ] |
Post subject: | |
marciano wrote: The only way I know to debug such diffuse bugs is to locate the problematic area by minimizing step-by-step the code which could cause the problems. I would begin by reducing the number of lights to one and putting just one simple object to the scene. After that I would try to remove shadow mapping and so on. I know this not the preferred way of debugging but what else should you do?
Unfortunately I don't have a Mac so I can't really help to find the problem. Ok, sounds logical. When I get my machine back (power supply died), I will work on that. Quick question though... are you validating the shaders after setting them up? Or is there a simple way to enable validation? |
Author: | marciano [ 24.11.2007, 16:25 ] |
Post subject: | |
swiftcoder wrote: Quick question though... are you validating the shaders after setting them up? Or is there a simple way to enable validation?
Shaders are automatically validated. The shader log with errors and warnings is written to the EngineLog.html file (if you didn't remove the dumpMessages call). This is something that you could look at first to make sure that there are no compilation errors. |
Author: | swiftcoder [ 24.11.2007, 19:30 ] |
Post subject: | |
marciano wrote: swiftcoder wrote: Quick question though... are you validating the shaders after setting them up? Or is there a simple way to enable validation? Shaders are automatically validated. The shader log with errors and warnings is written to the EngineLog.html file (if you didn't remove the dumpMessages call). This is something that you could look at first to make sure that there are no compilation errors. The log files were full of shader errors (missmatched vertex attributes and such), which I ignored for the moment. Apparently my power supply will be here on Tuesday, so I will check it out then. |
Author: | swiftcoder [ 29.11.2007, 18:55 ] |
Post subject: | |
Ok, back up and running. Here is the log file from the Knight demo, dumped immediately prior to the first frame (crash occurs during lighting pass of first frame). No errors I can see, and the shader warnings seem to just be an artefact of the shader setup. Not too helpful, I think? Code: 0.000 Shadow map precision is limited to 16 bit
0.003 Loading pipeline '../pipeline_Knight.xml' 0.004 Adding resource materials/postHDR.material.xml 0.005 Shadow map precision is limited to 16 bit 0.005 Adding resource materials/font.material.xml 0.005 Adding resource materials/logo.material.xml 0.005 Adding resource models/scene.scene.xml 0.005 Adding resource models/knight.scene.xml 0.005 Adding resource models/knight_order.anim 0.005 Adding resource models/knight_attack.anim 0.005 Adding resource models/particleSys1.scene.xml 0.005 Loading resource materials/postHDR.material.xml 0.005 Adding resource shaders/postHDR.shader.xml 0.005 Loading resource materials/font.material.xml 0.005 Adding resource shaders/overlay.shader.xml 0.005 Adding resource textures/font.tga 0.005 Loading resource materials/logo.material.xml 0.005 Adding resource textures/logo.tga 0.005 Loading resource models/scene.scene.xml 0.005 Adding resource models/scene.geo 0.005 Adding resource materials/scene/stones.material.xml 0.006 Loading resource models/knight.scene.xml 0.008 Adding resource models/knight.geo 0.008 Adding resource materials/knight/knight.material.xml 0.009 Loading resource models/knight_order.anim 0.017 Loading resource models/knight_attack.anim 0.023 Loading resource models/particleSys1.scene.xml 0.024 Adding resource materials/particle1.material.xml 0.024 Adding resource effects/particle1.effect.xml 0.024 Adding resource materials/particle2.material.xml 0.024 Adding resource effects/particle2.effect.xml 0.024 Loading resource shaders/postHDR.shader.xml 0.025 Adding resource shaders/utilityLib/fragPostProcess.glsl 0.025 Compiling shader context shaders/postHDR.shader.xml--->FINALPASS 0.050 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.050 Loading resource shaders/overlay.shader.xml 0.050 Compiling shader context shaders/overlay.shader.xml--->OVERLAY 0.052 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.054 Loading resource textures/font.tga 0.104 Loading resource textures/logo.tga 0.110 Loading resource models/scene.geo 0.111 Loading resource materials/scene/stones.material.xml 0.111 Adding resource shaders/parallax.shader.xml 0.112 Adding resource textures/layingrock.jpg 0.112 Adding resource textures/layingrockBump.tga 0.112 Loading resource models/knight.geo 0.133 Loading resource materials/knight/knight.material.xml 0.133 Adding resource shaders/skinning_metal.shader.xml 0.133 Adding resource textures/knight.jpg 0.133 Adding resource textures/cubemap.jpg 0.133 Loading resource materials/particle1.material.xml 0.133 Adding resource shaders/particle.shader.xml 0.133 Adding resource textures/particle1.tga 0.134 Loading resource effects/particle1.effect.xml 0.134 Loading resource materials/particle2.material.xml 0.134 Loading resource effects/particle2.effect.xml 0.134 Loading resource shaders/utilityLib/fragPostProcess.glsl 0.134 Compiling shader context shaders/postHDR.shader.xml--->BRIGHTPASS 0.138 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.139 Compiling shader context shaders/postHDR.shader.xml--->BLUR1 0.142 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.142 Compiling shader context shaders/postHDR.shader.xml--->BLUR2 0.145 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.145 Compiling shader context shaders/postHDR.shader.xml--->BLUR3 0.148 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.148 Compiling shader context shaders/postHDR.shader.xml--->BLUR4 0.151 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 0.152 Loading resource shaders/parallax.shader.xml 0.152 Adding resource shaders/utilityLib/vertCommon.glsl 0.152 Adding resource shaders/utilityLib/fragDeferred.glsl 0.152 Adding resource shaders/utilityLib/fragLighting.glsl 0.153 Loading resource textures/layingrock.jpg 0.209 Loading resource textures/layingrockBump.tga 0.258 Loading resource shaders/skinning_metal.shader.xml 0.259 Adding resource shaders/utilityLib/vertSkinning.glsl 0.259 Loading resource textures/knight.jpg 0.263 Loading resource textures/cubemap.jpg 2.210 Loading resource shaders/particle.shader.xml 2.211 Adding resource shaders/utilityLib/vertParticle.glsl 2.211 Loading resource textures/particle1.tga 2.211 Loading resource shaders/utilityLib/vertCommon.glsl 2.211 Compiling shader context shaders/parallax.shader.xml--->AMBIENT 2.214 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.214 Loading resource shaders/utilityLib/fragDeferred.glsl 2.214 Compiling shader context shaders/parallax.shader.xml--->ATTRIBPASS 2.219 [Linking] WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.219 Loading resource shaders/utilityLib/fragLighting.glsl 2.219 Compiling shader context shaders/parallax.shader.xml--->LIGHTING 2.226 [Linking] WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.226 Loading resource shaders/utilityLib/vertSkinning.glsl 2.226 Compiling shader context shaders/skinning_metal.shader.xml--->ATTRIBPASS 2.238 [Linking] WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.238 Compiling shader context shaders/skinning_metal.shader.xml--->SHADOWMAP 2.248 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.248 Compiling shader context shaders/skinning_metal.shader.xml--->LIGHTING 2.262 [Linking] WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.262 Compiling shader context shaders/skinning_metal.shader.xml--->AMBIENT 2.273 [Linking] WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords0' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parIdx' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'parCornerIdx' to match BindAttributeLocation request. 2.273 Loading resource shaders/utilityLib/vertParticle.glsl 2.273 Compiling shader context shaders/particle.shader.xml--->TRANSLUCENT 2.280 [Linking] WARNING: Could not find vertex shader attribute 'normal' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'bitangent' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'joints' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'weights' to match BindAttributeLocation request. WARNING: Could not find vertex shader attribute 'texCoords1' to match BindAttributeLocation request. 2.280 Adding node from resource models/scene.scene.xml 2.280 Adding node from resource models/knight.scene.xml 2.283 Adding node from resource models/particleSys1.scene.xml 2.283 Adding node Light1 |
Author: | marciano [ 01.12.2007, 17:53 ] |
Post subject: | |
Hmm, I didn't see these warnings under Windows or Linux. I have looked at the OpenGL specs again and they state that it is legal to bind a vertex attribute to a arbitrary name even if this name is never used in the shader. So I consider these warnings just as pure information and don't think that they have something to do with the actual problem. What graphics card do you have and which driver version are you using? |
Author: | swiftcoder [ 01.12.2007, 17:59 ] |
Post subject: | |
ATI Radeon X1600 (128MB), and the drivers are written by Apple and ATI jointly, and included with the OS (I am running the new OS X 10.5, so the drivers are only a few weeks old). |
Author: | marciano [ 07.12.2007, 21:02 ] |
Post subject: | |
On windows the samples work on a X1600 without any problems. Would it be possible to upload your modified code so that someone else could try it? That way we could make sure that it is definately not a driver problem. Thanks! |
Author: | swiftcoder [ 07.12.2007, 21:17 ] |
Post subject: | |
There are absolutely no code changes except those that fix the OpenGL #includes on the Mac. But if there are any other intrepid Mac users out there, I have packaged up a zip of the entire Mac project, which should build with one click: Deprecated in favour of binary release below (Assumes you have the Apple developer tools installed, and that you have installed the SDL framework in ~/Library/Frameworks, then just decompress this wherever you want, open up the .xcodeproj file, and click the build and run button). |
Author: | quai [ 27.12.2007, 22:10 ] |
Post subject: | |
Hi swiftcoder, Marciano and I tried your xcode project on mac os leopard and it works fine. We had no problems with lights. We used a new MacBook pro. There were some absolut pathes in your project file, but after changing them, we had no problems. Great work quai |
Author: | swiftcoder [ 28.12.2007, 00:54 ] |
Post subject: | |
quai wrote: Hi swiftcoder,
Marciano and I tried your xcode project on mac os leopard and it works fine. We had no problems with lights. We used a new MacBook pro. There were some absolut pathes in your project file, but after changing them, we had no problems. Great work quai Thanks! So that narrows it down to a problem with my card/drivers (Radeon X1600 Mobile). I am guessing we are using an unsupported extension, but I don't have time to track that down this week. |
Author: | quai [ 28.12.2007, 16:29 ] |
Post subject: | |
If have a NVIDIA GeForce 8600M GT with 128MB SDRAM. Greetings quai |
Author: | swiftcoder [ 28.12.2007, 23:22 ] |
Post subject: | |
quai wrote: If have a NVIDIA GeForce 8600M GT with 128MB SDRAM.
Greetings quai Thanks, I had figured as much from Apple's current product line-up. I have had no luck in tracking down the bug for my machine though - enabling any combination of lights causes OpenGL to crash while drawing the meshes in the lighting pass. |
Author: | swiftcoder [ 29.12.2007, 15:30 ] |
Post subject: | |
It seems that if the file "Content/shaders/utilityLib/fraglighting.glsl" is renamed (so that the engine cannot find it), the rest runs fine, both validation and light-loop rendering, which indicates that it is something in that shader which causes the crash. I am not so familiar with shaders, but if anyone has ideas there, I am willing to try them... Edit: I realise now that removing that shader probably disables every shader in the lighting pass, leaving me no closer to figuring out what is wrong. I would assume this is a driver bug, but it seems odd that no one else has ever uncovered this particular one Edit 2: Having taken a closer look at the shader setup, it may well be that shader. The vertex shaders for all of the lighting pass shaders are identical to the ambient pass, and the ambient pass works fine, so the problem could be in the fragment shader. However, the problem might just be caused by a sequence of state changes, which is going to be harder to track down. I tried disabling PCF in the fragment shader on a whim, but with no result. |
Page 1 of 5 | All times are UTC + 1 hour |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |