diff --git a/packages/core/src/filters/Filter.js b/packages/core/src/filters/Filter.js index 7e34a1a..6742fe8 100644 --- a/packages/core/src/filters/Filter.js +++ b/packages/core/src/filters/Filter.js @@ -147,7 +147,8 @@ */ constructor(vertexSrc, fragmentSrc, uniforms) { - const program = Program.from(vertexSrc, fragmentSrc); + const program = Program.from(vertexSrc || Filter.defaultVertexSrc, + fragmentSrc || Filter.defaultFragmentSrc); super(program, uniforms); diff --git a/packages/core/src/filters/Filter.js b/packages/core/src/filters/Filter.js index 7e34a1a..6742fe8 100644 --- a/packages/core/src/filters/Filter.js +++ b/packages/core/src/filters/Filter.js @@ -147,7 +147,8 @@ */ constructor(vertexSrc, fragmentSrc, uniforms) { - const program = Program.from(vertexSrc, fragmentSrc); + const program = Program.from(vertexSrc || Filter.defaultVertexSrc, + fragmentSrc || Filter.defaultFragmentSrc); super(program, uniforms); diff --git a/packages/core/src/filters/defaultFilter.frag b/packages/core/src/filters/defaultFilter.frag index a14c1be..5790a2e 100644 --- a/packages/core/src/filters/defaultFilter.frag +++ b/packages/core/src/filters/defaultFilter.frag @@ -1,22 +1,7 @@ varying vec2 vTextureCoord; -varying vec2 vFilterCoord; uniform sampler2D uSampler; -uniform sampler2D filterSampler; void main(void){ - vec4 masky = texture2D(filterSampler, vFilterCoord); - vec4 sample = texture2D(uSampler, vTextureCoord); - vec4 color; - if(mod(vFilterCoord.x, 1.0) > 0.5) - { - color = vec4(1.0, 0.0, 0.0, 1.0); - } - else - { - color = vec4(0.0, 1.0, 0.0, 1.0); - } - // gl_FragColor = vec4(mod(vFilterCoord.x, 1.5), vFilterCoord.y,0.0,1.0); - gl_FragColor = mix(sample, masky, 0.5); - gl_FragColor *= sample.a; + gl_FragColor = texture2D(uSampler, vTextureCoord); } diff --git a/packages/core/src/filters/Filter.js b/packages/core/src/filters/Filter.js index 7e34a1a..6742fe8 100644 --- a/packages/core/src/filters/Filter.js +++ b/packages/core/src/filters/Filter.js @@ -147,7 +147,8 @@ */ constructor(vertexSrc, fragmentSrc, uniforms) { - const program = Program.from(vertexSrc, fragmentSrc); + const program = Program.from(vertexSrc || Filter.defaultVertexSrc, + fragmentSrc || Filter.defaultFragmentSrc); super(program, uniforms); diff --git a/packages/core/src/filters/defaultFilter.frag b/packages/core/src/filters/defaultFilter.frag index a14c1be..5790a2e 100644 --- a/packages/core/src/filters/defaultFilter.frag +++ b/packages/core/src/filters/defaultFilter.frag @@ -1,22 +1,7 @@ varying vec2 vTextureCoord; -varying vec2 vFilterCoord; uniform sampler2D uSampler; -uniform sampler2D filterSampler; void main(void){ - vec4 masky = texture2D(filterSampler, vFilterCoord); - vec4 sample = texture2D(uSampler, vTextureCoord); - vec4 color; - if(mod(vFilterCoord.x, 1.0) > 0.5) - { - color = vec4(1.0, 0.0, 0.0, 1.0); - } - else - { - color = vec4(0.0, 1.0, 0.0, 1.0); - } - // gl_FragColor = vec4(mod(vFilterCoord.x, 1.5), vFilterCoord.y,0.0,1.0); - gl_FragColor = mix(sample, masky, 0.5); - gl_FragColor *= sample.a; + gl_FragColor = texture2D(uSampler, vTextureCoord); } diff --git a/packages/core/src/filters/defaultFilter.vert b/packages/core/src/filters/defaultFilter.vert index e1febca..66dd459 100644 --- a/packages/core/src/filters/defaultFilter.vert +++ b/packages/core/src/filters/defaultFilter.vert @@ -1,14 +1,26 @@ attribute vec2 aVertexPosition; -attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; -uniform mat3 filterMatrix; varying vec2 vTextureCoord; -varying vec2 vFilterCoord; -void main(void){ - gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); - vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0) ).xy; - vTextureCoord = aTextureCoord ; +uniform vec4 inputSize; +uniform vec4 outputFrame; + +vec4 filterVertexPosition( void ) +{ + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); +} + +vec2 filterTextureCoord( void ) +{ + return aVertexPosition * (outputFrame.zw * inputSize.zw); +} + +void main(void) +{ + gl_Position = filterVertexPosition(); + vTextureCoord = filterTextureCoord(); } diff --git a/packages/core/src/filters/Filter.js b/packages/core/src/filters/Filter.js index 7e34a1a..6742fe8 100644 --- a/packages/core/src/filters/Filter.js +++ b/packages/core/src/filters/Filter.js @@ -147,7 +147,8 @@ */ constructor(vertexSrc, fragmentSrc, uniforms) { - const program = Program.from(vertexSrc, fragmentSrc); + const program = Program.from(vertexSrc || Filter.defaultVertexSrc, + fragmentSrc || Filter.defaultFragmentSrc); super(program, uniforms); diff --git a/packages/core/src/filters/defaultFilter.frag b/packages/core/src/filters/defaultFilter.frag index a14c1be..5790a2e 100644 --- a/packages/core/src/filters/defaultFilter.frag +++ b/packages/core/src/filters/defaultFilter.frag @@ -1,22 +1,7 @@ varying vec2 vTextureCoord; -varying vec2 vFilterCoord; uniform sampler2D uSampler; -uniform sampler2D filterSampler; void main(void){ - vec4 masky = texture2D(filterSampler, vFilterCoord); - vec4 sample = texture2D(uSampler, vTextureCoord); - vec4 color; - if(mod(vFilterCoord.x, 1.0) > 0.5) - { - color = vec4(1.0, 0.0, 0.0, 1.0); - } - else - { - color = vec4(0.0, 1.0, 0.0, 1.0); - } - // gl_FragColor = vec4(mod(vFilterCoord.x, 1.5), vFilterCoord.y,0.0,1.0); - gl_FragColor = mix(sample, masky, 0.5); - gl_FragColor *= sample.a; + gl_FragColor = texture2D(uSampler, vTextureCoord); } diff --git a/packages/core/src/filters/defaultFilter.vert b/packages/core/src/filters/defaultFilter.vert index e1febca..66dd459 100644 --- a/packages/core/src/filters/defaultFilter.vert +++ b/packages/core/src/filters/defaultFilter.vert @@ -1,14 +1,26 @@ attribute vec2 aVertexPosition; -attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; -uniform mat3 filterMatrix; varying vec2 vTextureCoord; -varying vec2 vFilterCoord; -void main(void){ - gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); - vFilterCoord = ( filterMatrix * vec3( aTextureCoord, 1.0) ).xy; - vTextureCoord = aTextureCoord ; +uniform vec4 inputSize; +uniform vec4 outputFrame; + +vec4 filterVertexPosition( void ) +{ + vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy; + + return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); +} + +vec2 filterTextureCoord( void ) +{ + return aVertexPosition * (outputFrame.zw * inputSize.zw); +} + +void main(void) +{ + gl_Position = filterVertexPosition(); + vTextureCoord = filterTextureCoord(); } diff --git a/packages/filters/filter-blur/src/generateBlurVertSource.js b/packages/filters/filter-blur/src/generateBlurVertSource.js index 41a912a..57b31de 100644 --- a/packages/filters/filter-blur/src/generateBlurVertSource.js +++ b/packages/filters/filter-blur/src/generateBlurVertSource.js @@ -8,7 +8,6 @@ varying vec2 vBlurTexCoords[%size%]; uniform vec4 inputSize; - uniform vec4 inputClamp; uniform vec4 outputFrame; vec4 filterVertexPosition( void )