Sign in to follow this  

How to load a bumpmap

This topic is 1854 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey, I've been trying to get bumpmaps to work in my game, however, i'm not sure if i'm loading the texture right, heres the texture loading code:

[CODE]
D3DXCreateTextureFromFile(d3ddev, "brick_wall.png", &texture1);


D3DXCreateTextureFromFileEx(d3ddev, "brickwall_bm.png", 256, 256, D3DX_DEFAULT, D3DUSAGE_DYNAMIC, D3DFMT_Q8W8V8U8, D3DPOOL_DEFAULT, D3DX_DEFAULT, NULL, 0, NULL, NULL, &Brick_wall_bumpmap);

[/CODE]

The first texture is the brick wall, and the last texture is the bump map.

However, I also set the texture stage states, and they don't seem to work. It takes out the lighting, and the bump map doesn't display, here's the texture stage code:

[CODE]d3ddev->SetTexture(0, texture1);
d3ddev->SetTexture(1, Brick_wall_bumpmap);
d3ddev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
d3ddev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
d3ddev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
d3ddev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
d3ddev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
d3ddev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_BUMPENVMAP);
d3ddev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
d3ddev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
d3ddev->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
d3ddev->SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
for(int i = 0; i < lights.size(); i++)
{
d3ddev->SetLight(i, &lights[i].l);
d3ddev->LightEnable(i, TRUE);
}
cube1->DrawSubset(0);
for(int i = 0; i < wList.size(); i++)
{
wList[i].Render();
}
for(int i = 0; i < gunlist.size(); i++)
{
gunlist[i].Render();
}[/CODE]

Please help! What am i doing wrong?

Share this post


Link to post
Share on other sites
Ah

So old method.... how about just skip this and go to normal map? and shader?

sorry to say , It's too old so . so I hate searching old document..and making correct code? :)

very sorry. but it's better for you and me :)

Share this post


Link to post
Share on other sites
[quote name='GeniusPooh' timestamp='1355882242' post='5012277']
Ah

So old method.... how about just skip this and go to normal map? and shader?

sorry to say , It's too old so . so I hate searching old document..and making correct code? [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

very sorry. but it's better for you and me [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
[/quote]

True, it's just that i don't want to make a normal map for every single texture. Making a bumpmap is so much easier. I've tried dot3 and I haven't gotten it to work yet, and I plan on using it for the future, but i at least want to learn how to do a basic bump map for speed purposes. please help! Edited by Solid_Spy

Share this post


Link to post
Share on other sites
Converting a bump map to a normal map at run-time is easier and provides a faster run-time than trying to get bump-mapping to work with the old pipeline. It is just a Sobel filter.
Speed purposes? Then use a normal map.

I can’t help you with getting the fixed-function pipeline to work with bump-mapping. If I were to try to help you, all I would end up doing is checking online tutorials and samples, and there is no reason you can’t do that yourself.



L. Spiro

Share this post


Link to post
Share on other sites
Suppose you have computed the bump map from a height map, I think you need a environment map in stage 2 for blending.
In stage1, add the following code to set the matrix:

pd3dDevice->SetTextureStageState(1, D3DTSS_BUMPENVMAT00, F2DW(1));
pd3dDevice->SetTextureStageState(1, D3DTSS_BUMPENVMAT01, F2DW(0));
pd3dDevice->SetTextureStageState(1, D3DTSS_BUMPENVMAT10, F2DW(0));
pd3dDevice->SetTextureStageState(1, D3DTSS_BUMPENVMAT11, F2DW(1));

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1355887308' post='5012308']
Converting a bump map to a normal map at run-time is easier and provides a faster run-time than trying to get bump-mapping to work with the old pipeline. It is just a Sobel filter.
Speed purposes? Then use a normal map.

I can’t help you with getting the fixed-function pipeline to work with bump-mapping. If I were to try to help you, all I would end up doing is checking online tutorials and samples, and there is no reason you can’t do that yourself.



L. Spiro
[/quote]

Ok, your right, I did some research and found out that you can easily create a normal map in photoshop. At first I thought that you had to make an entire 3d model and sculpt it to make a normal map, but I was wrong. As for the online tutorials, i couldn't find any, but i'm still looking. Edited by Solid_Spy

Share this post


Link to post
Share on other sites

This topic is 1854 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this