X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tests%2Fglsl%2Ffunction_overloading.glsl;fp=tests%2Fglsl%2Ffunction_overloading.glsl;h=636db5112c6fde119672e6e9c3d321e2be40b986;hb=d1feb41b3ff4dd462f50891e8901bad39466b75c;hp=0000000000000000000000000000000000000000;hpb=73d52ab92ce8da522cd2eeb0d7f13c6af3f46e02;p=libs%2Fgl.git diff --git a/tests/glsl/function_overloading.glsl b/tests/glsl/function_overloading.glsl new file mode 100644 index 00000000..636db511 --- /dev/null +++ b/tests/glsl/function_overloading.glsl @@ -0,0 +1,60 @@ +uniform mat4 mvp; +uniform sampler2D tex; +uniform vec3 ambient; + +vec3 srgb_to_linear(vec3 color) +{ + bvec3 near_zero = lessThan(color, vec3(0.04045)); + vec3 gamma = pow((color.rgb+0.055)/1.055, vec3(2.4)); + return mix(color.rgb/12.92, gamma, near_zero); +} +vec4 srgb_to_linear(vec4 color) +{ + return vec4(srgb_to_linear(color.rgb), color.a); +} + +#pragma MSP stage(vertex) +layout(location=0) in vec4 position; +layout(location=1) in vec2 texcoord; +void main() +{ + passthrough; + gl_Position = mvp*position; +} + +#pragma MSP stage(fragment) +layout(location=0) out vec4 frag_color; +void main() +{ + frag_color = srgb_to_linear(texture(tex, texcoord)); +} + +/* Expected output: vertex +uniform mat4 mvp; +layout(location=0) in vec4 position; +layout(location=1) in vec2 texcoord; +out vec2 _vs_out_texcoord; +void main() +{ + _vs_out_texcoord = texcoord; + gl_Position = mvp*position; +} +*/ + +/* Expected output: fragment +uniform sampler2D tex; +vec3 srgb_to_linear(vec3 color) +{ + return mix(color.rgb/12.92, pow((color.rgb+0.055)/1.055, vec3(2.4)), lessThan(color, vec3(0.04045))); +} +vec4 srgb_to_linear(vec4 color) +{ + return vec4(srgb_to_linear(color.rgb), color.a); +} +layout(location=0) out vec4 frag_color; +in vec2 _vs_out_texcoord; +void main() +{ + frag_color = srgb_to_linear(texture(tex, _vs_out_texcoord)); +} +*/