diff options
author | Brian Osman <brianosman@google.com> | 2018-02-12 14:32:17 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-13 16:30:20 +0000 |
commit | 8a83ca4e9afc9e3c08b4e8c33a74392f9b3154d7 (patch) | |
tree | a0f4596f598a8330ef2a95a3964c4fe43bda46a2 /tests/SkSLGLSLTest.cpp | |
parent | c126191fd1f540f7318516a965c85a5bff07dad1 (diff) |
Add "sharpen" option to SkSL, to LOD bias all textures
This adds a fixed bias (-0.5) to the computed LOD of all
mip-mapped texture fetches. (Technically, to all texture
fetches, but that only matters for mip-mapped ones).
Clients can opt-in with a new GrContextOption.
Bug: skia:7541
Bug: chromium:562162
Change-Id: Ie3cd0679c4ab66f62d2dc32e7e68e5c99355115e
Reviewed-on: https://skia-review.googlesource.com/106322
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'tests/SkSLGLSLTest.cpp')
-rw-r--r-- | tests/SkSLGLSLTest.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp index 62c5cd6955..e63719781d 100644 --- a/tests/SkSLGLSLTest.cpp +++ b/tests/SkSLGLSLTest.cpp @@ -983,6 +983,62 @@ DEF_TEST(SkSLTexture, r) { "}\n"); } +DEF_TEST(SkSLSharpen, r) { + SkSL::Program::Settings settings; + settings.fSharpenTextures = true; + sk_sp<GrShaderCaps> caps = SkSL::ShaderCapsFactory::Default(); + settings.fCaps = caps.get(); + SkSL::Program::Inputs inputs; + test(r, + "uniform sampler1D one;" + "uniform sampler2D two;" + "void main() {" + "float4 a = texture(one, 0);" + "float4 b = texture(two, float2(0));" + "float4 c = texture(one, float2(0));" + "float4 d = texture(two, float3(0));" + "sk_FragColor = half4(a.x, b.x, c.x, d.x);" + "}", + settings, + "#version 400\n" + "out vec4 sk_FragColor;\n" + "uniform sampler1D one;\n" + "uniform sampler2D two;\n" + "void main() {\n" + " vec4 a = texture(one, 0.0, -0.5);\n" + " vec4 b = texture(two, vec2(0.0), -0.5);\n" + " vec4 c = textureProj(one, vec2(0.0), -0.5);\n" + " vec4 d = textureProj(two, vec3(0.0), -0.5);\n" + " sk_FragColor = vec4(a.x, b.x, c.x, d.x);\n" + "}\n", + &inputs); + + caps = SkSL::ShaderCapsFactory::Version110(); + settings.fCaps = caps.get(); + test(r, + "uniform sampler1D one;" + "uniform sampler2D two;" + "void main() {" + "float4 a = texture(one, 0);" + "float4 b = texture(two, float2(0));" + "float4 c = texture(one, float2(0));" + "float4 d = texture(two, float3(0));" + "sk_FragColor = half4(a.x, b.x, c.x, d.x);" + "}", + settings, + "#version 110\n" + "uniform sampler1D one;\n" + "uniform sampler2D two;\n" + "void main() {\n" + " vec4 a = texture1D(one, 0.0, -0.5);\n" + " vec4 b = texture2D(two, vec2(0.0), -0.5);\n" + " vec4 c = texture1DProj(one, vec2(0.0), -0.5);\n" + " vec4 d = texture2DProj(two, vec3(0.0), -0.5);\n" + " gl_FragColor = vec4(a.x, b.x, c.x, d.x);\n" + "}\n", + &inputs); +} + DEF_TEST(SkSLOffset, r) { test(r, "struct Test {" |