git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8256 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
1584f767f1
commit
1ca81c3355
@ -0,0 +1,23 @@ |
||||
uniform sampler2D m_Texture; |
||||
varying vec2 texCoord; |
||||
|
||||
uniform float m_gamma; |
||||
|
||||
vec3 gamma(vec3 L,float gamma) |
||||
{ |
||||
return pow(L, vec3(1.0 / gamma)); |
||||
} |
||||
|
||||
void main() { |
||||
vec4 texVal = texture2D(m_Texture, texCoord); |
||||
|
||||
if(m_gamma > 0.0) |
||||
{ |
||||
texVal.rgb = gamma(texVal.rgb , m_gamma); |
||||
} |
||||
#ifdef COMPUTE_LUMA |
||||
texVal.a = dot(texVal.rgb, vec3(0.299, 0.587, 0.114)); |
||||
#endif |
||||
|
||||
gl_FragColor = texVal; |
||||
} |
@ -0,0 +1,39 @@ |
||||
MaterialDef GammaCorrection { |
||||
|
||||
MaterialParameters { |
||||
Int NumSamples |
||||
Texture2D Texture |
||||
Float gamma |
||||
Boolean computeLuma |
||||
} |
||||
|
||||
Technique { |
||||
VertexShader GLSL150: Common/MatDefs/Post/Post15.vert |
||||
FragmentShader GLSL150: Common/MatDefs/Post/GammaCorrection15.frag |
||||
|
||||
WorldParameters { |
||||
WorldViewProjectionMatrix |
||||
} |
||||
|
||||
Defines { |
||||
COMPUTE_LUMA : computeLuma |
||||
} |
||||
} |
||||
|
||||
Technique { |
||||
VertexShader GLSL100: Common/MatDefs/Post/Post.vert |
||||
FragmentShader GLSL100: Common/MatDefs/Post/GammaCorrection.frag |
||||
|
||||
WorldParameters { |
||||
WorldViewProjectionMatrix |
||||
} |
||||
|
||||
Defines { |
||||
COMPUTE_LUMA : computeLuma |
||||
} |
||||
} |
||||
|
||||
Technique FixedFunc { |
||||
} |
||||
|
||||
} |
@ -0,0 +1,26 @@ |
||||
#import "Common/ShaderLib/MultiSample.glsllib" |
||||
|
||||
uniform COLORTEXTURE m_Texture; |
||||
in vec2 texCoord; |
||||
|
||||
uniform float m_gamma; |
||||
|
||||
vec3 gamma(vec3 L,float gamma) |
||||
{ |
||||
return pow(L, vec3(1.0 / gamma)); |
||||
} |
||||
|
||||
void main() { |
||||
vec4 texVal = texture2D(m_Texture, texCoord); |
||||
|
||||
if(m_gamma > 0.0) |
||||
{ |
||||
texVal.rgb = gamma(texVal.rgb , m_gamma); |
||||
} |
||||
|
||||
#ifdef COMPUTE_LUMA |
||||
texVal.a = dot(texVal.rgb, vec3(0.299, 0.587, 0.114)); |
||||
#endif |
||||
|
||||
gl_FragColor = texVal; |
||||
} |
@ -0,0 +1,78 @@ |
||||
package com.jme3.post.filters; |
||||
|
||||
import com.jme3.asset.AssetManager; |
||||
import com.jme3.material.Material; |
||||
import com.jme3.post.Filter; |
||||
import com.jme3.renderer.RenderManager; |
||||
import com.jme3.renderer.ViewPort; |
||||
|
||||
/** |
||||
* |
||||
* @author Phate666 |
||||
* @version 1.0 initial version |
||||
* @version 1.1 added luma |
||||
*/ |
||||
public class GammaCorrectionFilter extends Filter |
||||
{ |
||||
private float gamma = 2.0f; |
||||
private boolean computeLuma = false; |
||||
|
||||
public GammaCorrectionFilter() |
||||
{ |
||||
super("GammaCorrectionFilter"); |
||||
} |
||||
|
||||
public GammaCorrectionFilter(float gamma) |
||||
{ |
||||
this(); |
||||
this.setGamma(gamma); |
||||
} |
||||
|
||||
@Override |
||||
protected Material getMaterial() |
||||
{ |
||||
return material; |
||||
} |
||||
|
||||
@Override |
||||
protected void initFilter(AssetManager manager, |
||||
RenderManager renderManager, ViewPort vp, int w, int h) |
||||
{ |
||||
material = new Material(manager, |
||||
"Common/MatDefs/Post/GammaCorrection.j3md"); |
||||
material.setFloat("gamma", gamma); |
||||
material.setBoolean("computeLuma", computeLuma); |
||||
} |
||||
|
||||
public float getGamma() |
||||
{ |
||||
return gamma; |
||||
} |
||||
|
||||
/** |
||||
* set to 0.0 to disable gamma correction |
||||
* @param gamma |
||||
*/ |
||||
public void setGamma(float gamma) |
||||
{ |
||||
if (material != null) |
||||
{ |
||||
material.setFloat("gamma", gamma); |
||||
} |
||||
this.gamma = gamma; |
||||
} |
||||
|
||||
public boolean isComputeLuma() |
||||
{ |
||||
return computeLuma; |
||||
} |
||||
|
||||
public void setComputeLuma(boolean computeLuma) |
||||
{ |
||||
if (material != null) |
||||
{ |
||||
material.setBoolean("computeLuma", computeLuma); |
||||
} |
||||
this.computeLuma = computeLuma; |
||||
} |
||||
} |
Loading…
Reference in new issue