* FXAA now supports baseline GLSL 1.00 instead of GLSL 1.3

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9095 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
sha..rd 13 years ago
parent e9a28ced31
commit d0699f5c60
  1. 35
      engine/src/core-data/Common/MatDefs/Post/FXAA.frag
  2. 2
      engine/src/core-data/Common/MatDefs/Post/FXAA.j3md

@ -1,5 +1,4 @@
///#extension GL_EXT_gpu_shader4 : disable
#extension all : disable
#extension GL_EXT_gpu_shader4 : enable
uniform sampler2D m_Texture;
uniform vec2 g_Resolution;
@ -11,8 +10,18 @@ uniform float m_ReduceMul;
varying vec2 texCoord;
varying vec4 posPos;
#define FxaaTexLod0(t, p) textureLod(t, p, 0.0)
#define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
#define FxaaTex(t, p) texture2D(t, p)
#if __VERSION_ >= 130
#define OffsetVec(a, b) ivec2(a, b)
#define FxaaTexOff(t, p, o, r) textureOffset(t, p, o)
#elif defined(GL_EXT_gpu_shader4)
#define OffsetVec(a, b) ivec2(a, b)
#define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
#else
#define OffsetVec(a, b) vec2(a, b)
#define FxaaTexOff(t, p, o, r) texture2D(t, p + o * r)
#endif
vec3 FxaaPixelShader(
vec4 posPos, // Output of FxaaVertexShader interpolated across screen.
@ -24,12 +33,12 @@ vec3 FxaaPixelShader(
//#define FXAA_REDUCE_MUL (1.0/8.0)
//#define FXAA_SPAN_MAX 8.0
vec3 rgbNW = FxaaTexLod0(tex, posPos.zw).xyz;
vec3 rgbNE = FxaaTexOff(tex, posPos.zw, ivec2(1,0), rcpFrame.xy).xyz;
vec3 rgbSW = FxaaTexOff(tex, posPos.zw, ivec2(0,1), rcpFrame.xy).xyz;
vec3 rgbSE = FxaaTexOff(tex, posPos.zw, ivec2(1,1), rcpFrame.xy).xyz;
vec3 rgbNW = FxaaTex(tex, posPos.zw).xyz;
vec3 rgbNE = FxaaTexOff(tex, posPos.zw, OffsetVec(1,0), rcpFrame.xy).xyz;
vec3 rgbSW = FxaaTexOff(tex, posPos.zw, OffsetVec(0,1), rcpFrame.xy).xyz;
vec3 rgbSE = FxaaTexOff(tex, posPos.zw, OffsetVec(1,1), rcpFrame.xy).xyz;
vec3 rgbM = FxaaTexLod0(tex, posPos.xy).xyz;
vec3 rgbM = FxaaTex(tex, posPos.xy).xyz;
vec3 luma = vec3(0.299, 0.587, 0.114);
float lumaNW = dot(rgbNW, luma);
@ -54,11 +63,11 @@ vec3 FxaaPixelShader(
dir * rcpDirMin)) * rcpFrame.xy;
vec3 rgbA = (1.0/2.0) * (
FxaaTexLod0(tex, posPos.xy + dir * vec2(1.0/3.0 - 0.5)).xyz +
FxaaTexLod0(tex, posPos.xy + dir * vec2(2.0/3.0 - 0.5)).xyz);
FxaaTex(tex, posPos.xy + dir * vec2(1.0/3.0 - 0.5)).xyz +
FxaaTex(tex, posPos.xy + dir * vec2(2.0/3.0 - 0.5)).xyz);
vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (
FxaaTexLod0(tex, posPos.xy + dir * vec2(0.0/3.0 - 0.5)).xyz +
FxaaTexLod0(tex, posPos.xy + dir * vec2(3.0/3.0 - 0.5)).xyz);
FxaaTex(tex, posPos.xy + dir * vec2(0.0/3.0 - 0.5)).xyz +
FxaaTex(tex, posPos.xy + dir * vec2(3.0/3.0 - 0.5)).xyz);
float lumaB = dot(rgbB, luma);

@ -9,7 +9,7 @@ MaterialDef FXAA {
}
Technique {
VertexShader GLSL100: Common/MatDefs/Post/FXAA.vert
FragmentShader GLSL130: Common/MatDefs/Post/FXAA.frag
FragmentShader GLSL100: Common/MatDefs/Post/FXAA.frag
WorldParameters {
WorldViewProjectionMatrix
Resolution

Loading…
Cancel
Save