Nome: Preto e Branco (Escala de cinza)
Versão: GameMaker: Studio
Imagens e Videos:
Vertex Shader: Clique para ver o conteúdo
Código: Selecionar todos
//
// Vertex Shader padrão - Não mexemos nas vertices
//
attribute vec3 in_Position; // (x,y,z)
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}
Fragment Shader: Clique para ver o conteúdo
Código: Selecionar todos
//
// Fragment Shader: Preto e Branco (Luminância)
//
// Posição da Textura
varying vec2 v_vTexcoord;
void main()
{
// Pega o pixel atual
vec4 myColor = texture2D(gm_BaseTexture, v_vTexcoord);
// Diminui a intensidade do pixel
vec4 scaledColor = myColor * vec4(0.21, 0.72, 0.07, 1.0);
// Calcula luminância do pixel
float luminance = scaledColor.r + scaledColor.g + scaledColor.b ;
// Aplica níveis de cinza ao pixel
gl_FragColor = vec4(luminance, luminance, luminance, myColor.a);
}
No exemplo há mais dois Shaders (shBW2 e shBW3). Cada um utiliza um algoritmo diferente para converter as cores para escala de cinza. Pra mais detalhes veja a referência:
Algorithms: Grayscale convertion
Instruções de uso:
Para usar o Shader em toda a tela (Como no exemplo) basta:
- Selecionar o Shader no Evento
Draw Begin (Pois deve ser ativado antes de qualquer coisa ser desenhada [
Ver referência]);
- Coloque o
shader_reset()no Evento
Draw End.
Para usar em algumas sprites ou backgrounds (No evento
Draw):
- Selecionar o
Shader;
- Desenhar o que você quer;
- Reiniciar o
Shader com
shader_reset().
Download:
DOWNLOAD - EXEMPLO