浏览代码

better fxaa

David Catuhe 8 年之前
父节点
当前提交
4ea05d3bd1

+ 1 - 0
Tools/Gulp/config.json

@@ -600,6 +600,7 @@
                 "postProcesses"
             ], 
             "shaders" : [
+                "fxaa.vertex",
                 "fxaa.fragment"
             ]
         },                       

文件差异内容过多而无法显示
+ 1554 - 1554
dist/preview release/babylon.d.ts


文件差异内容过多而无法显示
+ 3 - 3
dist/preview release/babylon.js


文件差异内容过多而无法显示
+ 2 - 2
dist/preview release/babylon.max.js


文件差异内容过多而无法显示
+ 1554 - 1554
dist/preview release/babylon.module.d.ts


文件差异内容过多而无法显示
+ 3 - 3
dist/preview release/babylon.worker.js


文件差异内容过多而无法显示
+ 6296 - 6296
dist/preview release/customConfigurations/minimalViewer/babylon.d.ts


文件差异内容过多而无法显示
+ 3 - 3
dist/preview release/customConfigurations/minimalViewer/babylon.js


文件差异内容过多而无法显示
+ 2 - 2
dist/preview release/customConfigurations/minimalViewer/babylon.max.js


文件差异内容过多而无法显示
+ 6296 - 6296
dist/preview release/customConfigurations/minimalViewer/babylon.module.d.ts


+ 1 - 1
src/PostProcess/babylon.fxaaPostProcess.ts

@@ -4,7 +4,7 @@
         public texelHeight: number;
 
         constructor(name: string, options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType: number = Engine.TEXTURETYPE_UNSIGNED_INT) {
-            super(name, "fxaa", ["texelSize"], null, options, camera, samplingMode || BABYLON.Texture.BILINEAR_SAMPLINGMODE, engine, reusable, null, textureType);
+            super(name, "fxaa", ["texelSize"], null, options, camera, samplingMode || BABYLON.Texture.BILINEAR_SAMPLINGMODE, engine, reusable, null, textureType, "fxaa");
 
             this.onApplyObservable.add((effect: Effect) => {
                 var texelSize = this.texelSize;

+ 11 - 12
src/Shaders/fxaa.fragment.fx

@@ -1,7 +1,16 @@
-varying vec2 vUV;
-uniform sampler2D textureSampler;
+uniform sampler2D textureSampler;
 uniform vec2 texelSize;
 
+varying vec2 vUV;
+varying vec2 sampleCoordS;
+varying vec2 sampleCoordE;
+varying vec2 sampleCoordN;
+varying vec2 sampleCoordW;
+varying vec2 sampleCoordNW;
+varying vec2 sampleCoordSE;
+varying vec2 sampleCoordNE;
+varying vec2 sampleCoordSW;
+
 const float fxaaQualitySubpix = 1.0;
 const float fxaaQualityEdgeThreshold = 0.166;
 const float fxaaQualityEdgeThresholdMin = 0.0833;
@@ -10,16 +19,6 @@ const vec3 kLumaCoefficients = vec3(0.2126, 0.7152, 0.0722);
 #define FxaaLuma(rgba) dot(rgba.rgb, kLumaCoefficients)
 
 void main(){
-	vec2 sampleCoordS = vUV + vec2( 0.0, 1.0) * texelSize;
-	vec2 sampleCoordE = vUV + vec2( 1.0, 0.0) * texelSize;
-	vec2 sampleCoordN = vUV + vec2( 0.0,-1.0) * texelSize;
-	vec2 sampleCoordW = vUV + vec2(-1.0, 0.0) * texelSize;
-
-	vec2 sampleCoordNW = vUV + vec2(-1.0,-1.0) * texelSize;
-	vec2 sampleCoordSE = vUV + vec2( 1.0, 1.0) * texelSize;
-	vec2 sampleCoordNE = vUV + vec2( 1.0,-1.0) * texelSize;
-	vec2 sampleCoordSW = vUV + vec2(-1.0, 1.0) * texelSize;
-
 	vec2 posM;
 
 	posM.x = vUV.x;

+ 32 - 0
src/Shaders/fxaa.vertex.fx

@@ -0,0 +1,32 @@
+// Attributes
+attribute vec2 position;
+uniform vec2 texelSize;
+
+// Output
+varying vec2 vUV;
+varying vec2 sampleCoordS;
+varying vec2 sampleCoordE;
+varying vec2 sampleCoordN;
+varying vec2 sampleCoordW;
+varying vec2 sampleCoordNW;
+varying vec2 sampleCoordSE;
+varying vec2 sampleCoordNE;
+varying vec2 sampleCoordSW;
+
+const vec2 madd = vec2(0.5, 0.5);
+
+void main(void) {	
+	vUV = (position * madd + madd);
+
+	sampleCoordS = vUV + vec2( 0.0, 1.0) * texelSize;
+	sampleCoordE = vUV + vec2( 1.0, 0.0) * texelSize;
+	sampleCoordN = vUV + vec2( 0.0,-1.0) * texelSize;
+	sampleCoordW = vUV + vec2(-1.0, 0.0) * texelSize;
+
+	sampleCoordNW = vUV + vec2(-1.0,-1.0) * texelSize;
+	sampleCoordSE = vUV + vec2( 1.0, 1.0) * texelSize;
+	sampleCoordNE = vUV + vec2( 1.0,-1.0) * texelSize;
+	sampleCoordSW = vUV + vec2(-1.0, 1.0) * texelSize;
+
+	gl_Position = vec4(position, 0.0, 1.0);
+}