I don't understand the Doom 3 specular highlight problem...

fragmentMap doesn't work with the light interaction shader and is just passed in another pass if a fragment shader is used. Various limitations like that I think helped me get bored of making shaders for Doom 3 (gets real frustrating when you aren't able to do so many things do to inflexibilities in how shaders are setup to be handled also I could never get water drop refraction shader just like I wanted it though I really should have released whats just sitting on my computer).
 
Are you sure? The interaction shader already uses fragmentMaps (the first 6 slots are used so you can only use the seventh) probably for the diffuse, specular, normal, ect. maps.

In any case you can just run the interaction program again and pass the fragmentMap to it then, though that wouldn't be as efficient as one would like since the material would go through the interaction program twice (once for the regular diffuse, specular, normal stuff and then again for the extra fragmentMap). Still, there's probably a way to get it to use the fragmentMap without manually running the interaction program. By the way, for the most part I haven't tried any of this stuff, this is just what I've seen discussed on the Doom3World forums.
 
Cryect said:
Various limitations like that I think helped me get bored of making shaders for Doom 3
You're wasting your time.

You didn't purchase a D3-engine license, did you? That would make a big difference.
 
Is the SDK useless or what? Why would he need to buy the damn engine to make a mod?
 
Cryect said:
I could never get water drop refraction shader just like I wanted it though I really should have released whats just sitting on my computer).

Straight refraction or with a reflect texgen? Refraction is not a problem (I'm using a modified lava fragment program). Getting the mirrored surface be affected by the alpha channel, that I can't do (yet?).

swaaye said:
Why would he need to buy the damn engine to make a mod?

A mod is a modification of game assets, not engine technology. Modifying how the shader system works is not a mod. That'd be like trying to use the HL2/UT2k4/FC SDKs to introduce a unified lighting system in those games.
 
Reverend said:
Cryect said:
Various limitations like that I think helped me get bored of making shaders for Doom 3
You're wasting your time.

You didn't purchase a D3-engine license, did you? That would make a big difference.

Why would you need a Doom 3 engine licence to write fragment programs?
 
XxStratoMasterXx said:
Why would you need a Doom 3 engine licence to write fragment programs?

You don't...you need the code to change how stuff is passed to the fragment programs. Considering we don't really know entirely how the material system does this right now, it may be a bit early to be looking at modifying the code. :p
 
Reverend said:
Cryect said:
Various limitations like that I think helped me get bored of making shaders for Doom 3
You're wasting your time.

You didn't purchase a D3-engine license, did you? That would make a big difference.

Hehe, I agree I was wasting my time. Just as I was wasting my time back for when I made Quake 2 mods and documented scripting languages for other games :p But while I was wasting my time I was having fun, when it stops being fun I move on. Heh, so I sure don't care that I was wasting my time.

Edit: By the way sometimes its fun to work with those limitations ;)
 
Gabrobot said:
Are you sure? The interaction shader already uses fragmentMaps (the first 6 slots are used so you can only use the seventh) probably for the diffuse, specular, normal, ect. maps.

Uh won't guarantee it but from my testing I seem to recall that was true, I will maybe test it tomorrow if I have some free time.


Mordenkainen said:
Cryect said:
I could never get water drop refraction shader just like I wanted it though I really should have released whats just sitting on my computer).

Straight refraction or with a reflect texgen? Refraction is not a problem (I'm using a modified lava fragment program). Getting the mirrored surface be affected by the alpha channel, that I can't do (yet?).

Wrong type of refraction (and thats not really refraction really :p then again of course I'm kinda faking it myself but its closer to real refraction equations)

I'm referring to like what happens when you have water drops on your visor. Check out some pics here for an early version of my shader
http://www.doom3world.org/phpbb2/viewtopic.php?t=5663 just never finished it when I got frustrated at not being able to get animation working the way I wanted it.
 
I've not tried modifying any D3D 9 games shaders so can't really answer the question but Doom 3 is fairly flexible except for the below issues which aren't surprising for a game aimed to look pretty much the same for all cards including cards which don't have shader support(or limited shader support).

-No Render to Texture
-Not possible to substitute different light interaction shaders for different materials

Also I will make note I was never able to get vertex shaders to work that move the vertices at all (always resulted in black objects no matter what I did to the vertices).

Render to Texture is the big one and its definately possible a Doom 3 licenser will allow for these to specified and used.

BTW for those working with shaders for Doom 3 and wondering what is passed to your pixel shaders here is Carmack's response in case you never saw this email I posted on Doom3World a few months ago.



John Carmack wrote said:
Here is what you get:

qglVertexPointer( 3, GL_FLOAT, sizeof( idDrawVert ), ac->xyz.ToFloatPtr() );
qglTexCoordPointer( 2, GL_FLOAT, sizeof( idDrawVert ), reinterpret_cast<void *>(&ac->st) );
qglColorPointer( 4, GL_UNSIGNED_BYTE, sizeof( idDrawVert ), (void *)&ac->color );
qglVertexAttribPointerARB( 9, 3, GL_FLOAT, false, sizeof( idDrawVert ), ac->tangents[0].ToFloatPtr() );
qglVertexAttribPointerARB( 10, 3, GL_FLOAT, false, sizeof( idDrawVert ), ac->tangents[1].ToFloatPtr() );
qglNormalPointer( GL_FLOAT, sizeof( idDrawVert ), ac->normal.ToFloatPtr() );
 
Back
Top