Cel-Shading effect on BMP model textures?

Hello all,

I am not sure if this is the right board, I’m relatively new to OGL but this issue might be slightly more advanced…

I was just looking at Nehe’s Cel Shading tutorial , I understand from the code that the effect is obtained by applying one uni-color texture to the model… I was wondering if there was a way to have the effect work with a Bitmap texture?.. I understand that the relevant code is:


// Cel-Shading Code
glEnable (GL_TEXTURE_1D);               // Enable 1D Texturing
glBindTexture (GL_TEXTURE_1D, shaderTexture[0]);    // Bind Our Texture
 
glColor3f (1.0f, 1.0f, 1.0f);  

....

After having processed the shader.txt file… Is there a way to run that on a normal bitmap texture? My model loader starts its drawing code with these lines


	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, textureId);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
...

And then goes on do draw the vertices…

Thank you very much!

There are techniques for edge detection that can be done on a bitmap. Photoshop and Paint Shop pro and other such image editors have had such functions since a very long time.

You can probably run those algorithms through shaders. I have seen examples here and there on the web using a Sobel filter. Do a websearch, I’m sure you’ll find a few.

I think he means he wants to use a 2D texture rather than a 1D texture to store the color ramp.

If that’s indeed your question, yes it is possible. You should be able to exchange GL_TEXTURE_1D for GL_TEXTURE_2D, and glTexImage1D for glTexImage2D and it should just work. If it doesn’t, verify if your color ramp texture has power-of-two (POT) dimensions, though on most modern GL versions this limitation is no longer an obstacle. You will probably want to avoid mipmapping, as it does not work well without 2-component texture coordinates.