Sahara Discussion Thread
by Konrad Kiss · in Torque 3D Professional · 08/16/2010 (9:06 pm) · 165 replies
Sahara is a tech extension to Torque 3D 1.1 Beta 1, 2 and 3 engines (1.1 Final soon to follow) which lets you create more realistic game environments by generating naturally accumulated dirt, snow, dust or any other material over your game shapes. It is a successor to our Cliff Construction Kit. This thread is our official discussion thread.
View in HD on YouTube
Sahara is now available for purchase here.
View in HD on YouTube
About the author
http://about.me/konrad.kiss
#42
Yes i have assigned a normal to the shape.
yes i have a nvidia Geforce GTX280 supports shader Model 4
08/24/2010 (9:20 am)
hello KonradYes i have assigned a normal to the shape.
yes i have a nvidia Geforce GTX280 supports shader Model 4
#43
Can you send your material definition code to the sahara support email please? If possible, I'm sure it will be easier for me to see what the problem is. Thanks in advance!
08/24/2010 (9:25 am)
@Hans: Thats good. Just to have the basic stuff out of the way..Can you send your material definition code to the sahara support email please? If possible, I'm sure it will be easier for me to see what the problem is. Thanks in advance!
#44
The strength slider doesn't change the numbers next to it, but does change the look of the material in the viewport. I'm guessing that I have some typos, or missed some line breaks when doing the manual installation. I'll have a look at that this evening too.
Thanks.
08/24/2010 (5:15 pm)
I'll send you the material definition code when I get home this evening. The strength slider doesn't change the numbers next to it, but does change the look of the material in the viewport. I'm guessing that I have some typos, or missed some line breaks when doing the manual installation. I'll have a look at that this evening too.
Thanks.
#45
08/24/2010 (5:19 pm)
If you have not modified that tool using a merge tool will be the best for installing it.. Even with AFX the merge tool installs the tools patch perfect.
#46
08/25/2010 (6:18 am)
I figured out that patching process and used it instead of manually patching this time. All of the problems I ran into are now gone.
#48
@Hans: It's where your Material in question is defined in script (just copy and paste this material from the materials.cs).
@All: I will probably delay the official launch until the 6th or 7th of September because I'll not be available for support for days until then. I'll however update the manual installation instructions and let you know when it's up.
08/25/2010 (8:11 am)
@Joe: Thank you very much for letting us know.@Hans: It's where your Material in question is defined in script (just copy and paste this material from the materials.cs).
@All: I will probably delay the official launch until the 6th or 7th of September because I'll not be available for support for days until then. I'll however update the manual installation instructions and let you know when it's up.
#49
Getting good UVW mapping seems to be key to getting a good effect out of the accumulation mapping.
Some fairly thick snow accumulation.
I have run into one bug which cropped up in a very specific (and probably pretty uncommon) scenario: When creating multiple materials which each use the same diffuse, normal, and accumulation textures but vary in settings (specular, accumulation values), the renderer seems to get confused about which material is which when they're all in the scene at once. When this happens it will use the parameters from the first material defined in script execution order for the other material as well. Changing any of the 3 textures corrects it.
I'm going to do some more thorough testing to attempt to determine if this is related to an issue with T3D's material system or something in the Sahara code. Obviously it's not a huge issue, as it's fairly redundant to have multiple materials using the exact same textures, but it still points to some possible failure in the material system which could cause other problems.
Anyway, that oddity aside, it's working great. Seems like there's a lot of potential for creating distinct environments without having to go back to the art tools. I can't wait to dig a little deeper and try out some more complex setups than just blanketing everything in snow. =)
08/25/2010 (10:28 am)
Really enjoying this so far. I've mainly been focusing on snow at the moment, but I can see tons of other potential uses for this system. Installed from the patches without issue -- wouldn't normally use a patch, but in this case I was quite certain I hadn't altered any of the very shader and material specific files involved. For anyone worried about potential conflicts with the .patch files, I'd suggest using TortoiseSVN as it provides a nice merge preview interface which lets you confirm that all the changes will match up as intended.Getting good UVW mapping seems to be key to getting a good effect out of the accumulation mapping.
Some fairly thick snow accumulation.I have run into one bug which cropped up in a very specific (and probably pretty uncommon) scenario: When creating multiple materials which each use the same diffuse, normal, and accumulation textures but vary in settings (specular, accumulation values), the renderer seems to get confused about which material is which when they're all in the scene at once. When this happens it will use the parameters from the first material defined in script execution order for the other material as well. Changing any of the 3 textures corrects it.
I'm going to do some more thorough testing to attempt to determine if this is related to an issue with T3D's material system or something in the Sahara code. Obviously it's not a huge issue, as it's fairly redundant to have multiple materials using the exact same textures, but it still points to some possible failure in the material system which could cause other problems.
Anyway, that oddity aside, it's working great. Seems like there's a lot of potential for creating distinct environments without having to go back to the art tools. I can't wait to dig a little deeper and try out some more complex setups than just blanketing everything in snow. =)
#50
Interesting information about the bug. I can't see how it would be in connection with Sahara, but there have been a number of such bugs already squashed. I'll be interested in what you find - and I'll try to do some bug hunting myself.
@Everyone: Unfortunately it seems like I am going to exile until the 6th of September. I will probably not have internet connection, or just in very rare bursts. I will not be able to provide support for the kit during this time, so if you're thinking about getting Sahara, please be aware of this. I'll try to make up for this in a coming (free) update in October that will add something cool to the feature list.
The updated manual instructions and tutorial will also hav to be delayed until after the 6th. Then I'll be back at full speed. :)
Until the 6th,
--Konrad
08/26/2010 (6:15 pm)
@Henry: Thank you so much for posting that. It's the most rewarding thing, ever, to see the feature be used as intended, honestly. It looks beautiful.Interesting information about the bug. I can't see how it would be in connection with Sahara, but there have been a number of such bugs already squashed. I'll be interested in what you find - and I'll try to do some bug hunting myself.
@Everyone: Unfortunately it seems like I am going to exile until the 6th of September. I will probably not have internet connection, or just in very rare bursts. I will not be able to provide support for the kit during this time, so if you're thinking about getting Sahara, please be aware of this. I'll try to make up for this in a coming (free) update in October that will add something cool to the feature list.
The updated manual instructions and tutorial will also hav to be delayed until after the 6th. Then I'll be back at full speed. :)
Until the 6th,
--Konrad
#51
ewww ... hospital food ... well, ewww @ British NHS food ... don't know about Hungary.
08/26/2010 (6:40 pm)
*waves at Konrad*ewww ... hospital food ... well, ewww @ British NHS food ... don't know about Hungary.
#52
If I could actually get around the pink (sometimes green) screenshot problems with this machine I'd show off some fun I've been having with Sahara. One neat thing I've done is playing around with fire and *scorching* things without the use of stupid decals.
08/26/2010 (7:07 pm)
Be well dude, I think we all understand that time off and away sometimes happens. Anyways, thanks for this excellent new functionality :)If I could actually get around the pink (sometimes green) screenshot problems with this machine I'd show off some fun I've been having with Sahara. One neat thing I've done is playing around with fire and *scorching* things without the use of stupid decals.
#55
08/26/2010 (7:50 pm)
@Steve: nah, it's a screenshot issue from another thread, which was marked as *Resolved*, that makes all of my screenshots come out as either bright green or pink... makes it hard to show off cool stuff -- or at least my second opinon/eye (who isn't color perception challenged) assures me that some of the things do look cool ;)
#56
The hospital part comes right after the holiday part, but according to my doctors, it's "no big deal". I will skip my response to keep this rated E. They want to break the asteroid (it feels more like the entire Kuiper belt actually), but it would end up with more than 300 times more shards than what my brother was in hospital with a few years back. Very encouraging.
Well either way, I'm just not sure how I can solve Internet access from the place we'll stay at if it doesn't have a hotspot. Because of that uncertainty, I didn't want to blog about / "officially" launch Sahara just yet. I can better respond to any issues with Internet access most of the time, though I'm getting better at telepathy.
Our game is 2 weeks from launching into private beta. So I'll be working a lot over the holidays, which sucks, but it would suck even more if I wasn't able to.
08/26/2010 (7:54 pm)
Thanks guys. :) Actually, it's part kidney fun, part late holidays with the kids and wife on Corsica. They are excited to see the sea. (We're a landlocked country, so it's a first for the kids.) We chose to go by car and stop on the way in Venice & other interesting places. So, don't worry, I'm gonna be fine between the cramps. :) The hospital part comes right after the holiday part, but according to my doctors, it's "no big deal". I will skip my response to keep this rated E. They want to break the asteroid (it feels more like the entire Kuiper belt actually), but it would end up with more than 300 times more shards than what my brother was in hospital with a few years back. Very encouraging.
Well either way, I'm just not sure how I can solve Internet access from the place we'll stay at if it doesn't have a hotspot. Because of that uncertainty, I didn't want to blog about / "officially" launch Sahara just yet. I can better respond to any issues with Internet access most of the time, though I'm getting better at telepathy.
Our game is 2 weeks from launching into private beta. So I'll be working a lot over the holidays, which sucks, but it would suck even more if I wasn't able to.
#57
Edit:
Err... that didn't sound right: imbibe lots of liquids and lay off the telepathy while enjoying the sea with the family.
08/26/2010 (8:02 pm)
Ooo enjoy the holiday then and keep yourself lubricated :D Edit:
Err... that didn't sound right: imbibe lots of liquids and lay off the telepathy while enjoying the sea with the family.
#58
Just tried rebuilding with the most recent DXSDK update (June... was still using March '09), but that doesn't seem to have helped. It calls an AssertFatal at line 125 of shaderGen/shaderOp.cpp ... not sure how helpful that is. I'll see if I can pull anything else out of the debugger.
08/26/2010 (9:02 pm)
This might not be the best time considering your current tripple-combo of kidney stones, vacation, and project crunch time... But I just discovered that the accumulation mapped materials really don't seem to like being reflected by water objects. Anytime I try to add an object using the accumulation mapping to a scene with fullReflect water, the game crashes immediately. I see you had water in some of the scenes in the video, but I can't tell if you were using full reflect in those scenes.Just tried rebuilding with the most recent DXSDK update (June... was still using March '09), but that doesn't seem to have helped. It calls an AssertFatal at line 125 of shaderGen/shaderOp.cpp ... not sure how helpful that is. I'll see if I can pull anything else out of the debugger.
#59
08/26/2010 (9:13 pm)
Thanks for the heads-up, Henry. I will check on this and push out an update asap.
#60
08/26/2010 (9:50 pm)
Having trouble fitting this into an edit on my last reply, so.. stack trace!!> Q11a_DEBUG.dll!GenOp::GenOp(const char * statement=0x119e4740, ...) Line 125 C++
Q11a_DEBUG.dll!PixelSpecularHLSL::processPix(Vector<ShaderComponent *> & componentList={...}, const MaterialFeatureData & fd={...}) Line 74 + 0x30 bytes C++
Q11a_DEBUG.dll!DeferredPixelSpecularHLSL::processPix(Vector<ShaderComponent *> & componentList={...}, const MaterialFeatureData & fd={...}) Line 482 C++
Q11a_DEBUG.dll!ShaderGen::_processPixFeatures(Vector<GFXShaderMacro> & macros={...}, bool macrosOnly=false) Line 293 C++
Q11a_DEBUG.dll!ShaderGen::generateShader(const MaterialFeatureData & featureData={...}, char * vertFile=0x001896e0, char * pixFile=0x001895e0, float * pixVersion=0x001895dc, const GFXVertexFormat * vertexFormat=0x0c398a98, const char * cacheName=0x0c2505b5, Vector<GFXShaderMacro> & macros={...}) Line 189 C++
Q11a_DEBUG.dll!ShaderGen::getShader(const MaterialFeatureData & featureData={...}, const GFXVertexFormat * vertexFormat=0x0c398a98, const Vector<GFXShaderMacro> * macros=0x0c2485a4) Line 472 C++
Q11a_DEBUG.dll!ProcessedShaderMaterial::_addPass(ShaderRenderPassData & rpd={...}, unsigned int & texIndex=3, MaterialFeatureData & fd={...}, unsigned int stageNum=0, const FeatureSet & features={...}) Line 610 + 0x26 bytes C++
Q11a_DEBUG.dll!ProcessedShaderMaterial::_createPasses(MaterialFeatureData & stageFeatures={...}, unsigned int stageNum=0, const FeatureSet & features={...}) Line 552 + 0x27 bytes C++
Q11a_DEBUG.dll!ProcessedShaderMaterial::init(const FeatureSet & features={...}, const GFXVertexFormat * vertexFormat=0x0c398a98, const fastdelegate::FastDelegate<void __cdecl(ProcessedMaterial *,unsigned int,MaterialFeatureData &,FeatureSet const &)> & featuresDelegate={...}) Line 179 + 0x19 bytes C++
Q11a_DEBUG.dll!MatInstance::processMaterial() Line 338 + 0x25 bytes C++
Q11a_DEBUG.dll!MatInstance::init(const FeatureSet & features={...}, const GFXVertexFormat * vertexFormat=0x0c398a98) Line 265 + 0x10 bytes C++
Q11a_DEBUG.dll!ReflectionMaterialHook::init(BaseMatInstance * inMat=0x0c1e61d0) Line 54 + 0x2f bytes C++
Q11a_DEBUG.dll!ReflectionManager::getReflectionMaterial(BaseMatInstance * inMat=0x0c1e61d0) Line 263 C++
Q11a_DEBUG.dll!fastdelegate::FastDelegate1<BaseMatInstance *,BaseMatInstance *>::operator()(BaseMatInstance * p1=0x0c1e61d0) Line 990 + 0x1a bytes C++
Q11a_DEBUG.dll!SceneState::getOverrideMaterial(BaseMatInstance * matInst=0x0c1e61d0) Line 348 C++
Q11a_DEBUG.dll!TSMesh::innerRender(TSMaterialList * materials=0x0c398620, const TSRenderState & rdata={...}, GFXVertexBufferDataHandle & vb={...}, GFXPrimitiveBufferHandle & pb={...}) Line 227 + 0xf bytes C++
Q11a_DEBUG.dll!TSMesh::render(TSMaterialList * materials=0x0c398620, const TSRenderState & rdata={...}, bool isSkinDirty=true, const Vector<MatrixF> & transforms={...}, GFXVertexBufferDataHandle & vertexBuffer={...}, GFXPrimitiveBufferHandle & primitiveBuffer={...}) Line 129 C++
Q11a_DEBUG.dll!TSShapeInstance::MeshObjectInstance::render(int objectDetail=2, TSMaterialList * materials=0x0c398620, const TSRenderState & rdata={...}, float alpha=1.0000000) Line 816 C++
Q11a_DEBUG.dll!TSShapeInstance::render(const TSRenderState & rdata={...}, int dl=2, float intraDL=0.37623259) Line 564 C++
Q11a_DEBUG.dll!TSShapeInstance::render(const TSRenderState & rdata={...}) Line 456 + 0x27 bytes C++
Q11a_DEBUG.dll!TSStatic::prepRenderImage(SceneState * state=0x0c2375e0, const unsigned int stateKey=16392, const unsigned int __formal=4294967295, const unsigned int __formal=4294967295) Line 445 C++
Q11a_DEBUG.dll!SceneGraph::treeTraverseVisit(SceneObject * obj=0x0c3962b0, SceneState * state=0x0c2375e0, const unsigned int stateKey=16392) Line 323 C++
Q11a_DEBUG.dll!SceneGraph::_buildSceneTree(SceneState * state=0x0c2375e0, unsigned int objectMask=4294967295, SceneObject * baseObject=0x03451fb0, unsigned int baseZone=0, unsigned int currDepth=1) Line 186 C++
Q11a_DEBUG.dll!SceneGraph::renderScene(SceneState * sceneState=0x0c2375e0, unsigned int objectMask=4294967295) Line 243 C++
Q11a_DEBUG.dll!PlaneReflector::updateReflection(const ReflectParams & params={...}) Line 615 C++
Associate Konrad Kiss
Bitgap Games
@Hans: Please make sure you have a normal map on the shape and your card supports SM3+.
Let me know guys how this goes. Contact me on that support email if you need more help with specifics.
There's also a video tutorial coming up that should make the use of Sahara a lot easier.