Diffuse color?
With XNA, you have BasicEffect which has the "Diffuse" property. I haven't messed with HLSL in a while, but I'm wondering how to write the code to add color to a texture. For example: I have a texture, and I want to draw it with it blended red. What would I do if I had float4 blendColor and float4 texColor (where texColor is the color of the pixel for that pass)?
Then you can just go like this in your pixel shader (in pseudocode):
Or you can blend it more or less strongly like this:
If t = 0, the output color will just be texColor, if t = 1 then it will be blendColor. Values in between give various blend levels. t = 0.5 corresponds to the blend before.
outputcolor = (texColor + blendColor) * 0.5;
Or you can blend it more or less strongly like this:
outputcolor = lerp(texColor, blendColor, t);
If t = 0, the output color will just be texColor, if t = 1 then it will be blendColor. Values in between give various blend levels. t = 0.5 corresponds to the blend before.
Then you can just go like this in your pixel shader (in pseudocode):
outputcolor = (texColor + blendColor) * 0.5;
Or you can blend it more or less strongly like this:
outputcolor = lerp(texColor, blendColor, t);
If t = 0, the output color will just be texColor, if t = 1 then it will be blendColor. Values in between give various blend levels. t = 0.5 corresponds to the blend before.
I actually figured it out myself. I tried the code you provided, and it didn't do what I wanted. It did some weird blending.
texColor * blendColor
does exactly what I want.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement