diff --git a/drape/drape.pro b/drape/drape.pro index 7ecb36d21e..bf7c580ead 100644 --- a/drape/drape.pro +++ b/drape/drape.pro @@ -17,3 +17,12 @@ DRAPE_DIR = . include($$DRAPE_DIR/drape_common.pri) SOURCES += glfunctions.cpp + +OTHER_FILES += \ + shaders/simple_vertex_shader.vsh \ + shaders/solid_area_fragment_shader.fsh \ + shaders/texturing_vertex_shader.vsh \ + shaders/shader_index.txt \ + shaders/texturing_fragment_shader.fsh + +HEADERS += diff --git a/drape/shaders/doc/simple_vertex_shader_vsh.txt b/drape/shaders/doc/simple_vertex_shader_vsh.txt new file mode 100644 index 0000000000..579e883711 --- /dev/null +++ b/drape/shaders/doc/simple_vertex_shader_vsh.txt @@ -0,0 +1,8 @@ +Simple transformation position by modelViewProjection + +Attributes: + - position (vec2) xy of point + - depth (float) z of point + +Uniforms: + - modelViewProjectionMatrix (mat4) \ No newline at end of file diff --git a/drape/shaders/doc/solid_area_fragment_shader_fsh.txt b/drape/shaders/doc/solid_area_fragment_shader_fsh.txt new file mode 100644 index 0000000000..e03a883694 --- /dev/null +++ b/drape/shaders/doc/solid_area_fragment_shader_fsh.txt @@ -0,0 +1,4 @@ +Translate input uniform color into output gl_FragColor + +Uniforms: + - color (vec4) \ No newline at end of file diff --git a/drape/shaders/doc/texturing_fragment_shader_fsh.txt b/drape/shaders/doc/texturing_fragment_shader_fsh.txt new file mode 100644 index 0000000000..e5f77008de --- /dev/null +++ b/drape/shaders/doc/texturing_fragment_shader_fsh.txt @@ -0,0 +1,7 @@ +Transfer color from texture into gl_FragColor + +uniforms: + - textureUnit (sampler2D) + +varying: + - varTexCoords (vec4) coordinates of result color on texture “textureUnit” \ No newline at end of file diff --git a/drape/shaders/doc/texturing_vertex_shader_vsh.txt b/drape/shaders/doc/texturing_vertex_shader_vsh.txt new file mode 100644 index 0000000000..6f20a957a8 --- /dev/null +++ b/drape/shaders/doc/texturing_vertex_shader_vsh.txt @@ -0,0 +1,13 @@ +Translate global position into pixels by modelViewProjectionMatrix +Texture coordinates transfer without changes into (gl interpolator) pixel shader + +attributes: +- position (vec2) xy of point +- depth (float) z of point +- texCoords (vec4) texture coordinates of vertex + +uniforms: +- modelViewPorjectionMatrix (mat4) + +varying: +- varTexCoords (vec4) output texture coordinates filled by texCoords \ No newline at end of file diff --git a/drape/shaders/shader_index.txt b/drape/shaders/shader_index.txt new file mode 100644 index 0000000000..5d5d383b95 --- /dev/null +++ b/drape/shaders/shader_index.txt @@ -0,0 +1,2 @@ +SOLID_AREA_PROGRAM simple_vertex_shader.vsh solid_area_fragment_shader.fsh +TEXTURING_PROGRAM texturing_vertex_shader.vsh texturing_fragment_shader.fsh diff --git a/drape/shaders/simple_vertex_shader.vsh b/drape/shaders/simple_vertex_shader.vsh new file mode 100644 index 0000000000..bd24df16fb --- /dev/null +++ b/drape/shaders/simple_vertex_shader.vsh @@ -0,0 +1,9 @@ +attribute mediump vec2 position; +attribute mediump float depth; + +uniform mediump mat4 modelViewProjectionMatrix; + +void main(void) +{ + gl_Position = modelViewProjectionMatrix * vec4(position, depth, 1.0); +} diff --git a/drape/shaders/solid_area_fragment_shader.fsh b/drape/shaders/solid_area_fragment_shader.fsh new file mode 100644 index 0000000000..d37ec3bb67 --- /dev/null +++ b/drape/shaders/solid_area_fragment_shader.fsh @@ -0,0 +1,6 @@ +uniform lowp vec4 color; + +void main(void) +{ + gl_FragColor = color; +} diff --git a/drape/shaders/texturing_fragment_shader.fsh b/drape/shaders/texturing_fragment_shader.fsh new file mode 100644 index 0000000000..9fa5f292f8 --- /dev/null +++ b/drape/shaders/texturing_fragment_shader.fsh @@ -0,0 +1,7 @@ +uniform sampler2D textureUnit; +varying highp vec4 varTexCoords; + +void main(void) +{ + gl_FragColor = texture2D(textureUnit, varTexCoords.st); +} diff --git a/drape/shaders/texturing_vertex_shader.vsh b/drape/shaders/texturing_vertex_shader.vsh new file mode 100644 index 0000000000..ba602d6eab --- /dev/null +++ b/drape/shaders/texturing_vertex_shader.vsh @@ -0,0 +1,13 @@ +attribute mediump vec2 position; +attribute mediump float depth; +attribute mediump vec4 texCoords; + +uniform highp mat4 modelViewProjectionMatrix; + +varying highp vec4 varTexCoords; + +void main(void) +{ + gl_Position = modelViewProjectionMatrix * vec4(position, depth, 1.0); + varTexCoords = texCoords; +}