2016년 11월 26일 토요일

GMS shader Basic


Shader 로 할수 있는 것


위 동영상 보면 됩니다.
Water Effects
Colour Remapping => 다양하게 색을 변화 시킬 수 있습니다.
Film Filters
Normal Mapping


GMS 에서 shader를 사용하는 방법에 대해서 조사해 보았습니다.

http://blog.naver.com/yoyofa/193411078
https://www.youtube.com/watch?v=zGIx8SBrz5o

간단한 예제로는  Colour Remaping을 이용한 화면 색 바꾸기입니다.
바로 위 동영상을 보면 됩니다.

shader를 만들면 2개의 소스가 있는데요
Fragment 소스를 이용합니다.
//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;

void main()
{
    vec4 OriginalColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );

    float Red = OriginalColor.r;
    float Green = 0.0;
    float Blue = 0.0;
    float Alpha = 1.0;
    vec4 Color = vec4(Red,Green,Blue,Alpha);
    
    gl_FragColor = Color;
}
간단하게 설명 드리면 OriginalColor 라는 변수가 현재 점의 색을 의미합니다.
그리고 출력점의 색은 gl_FragColor 이게 됩니다.
gl_FragColor =OriginalColor 이런식으로 표현하게 되면 현재색이 그대로 나오는거고
위 소스는 빨간색 성분은 그대로 나오고 G,B의 색성분은 안나와서 최종색은 빨간색 필터같은 느낌이 나게 됩니다.

이걸 실제 사용할때는 draw event에 아래와 같은 방법으로 shader_set 함수를 호출하고 draw를 넣어주면 됩니다. 
사용후에는 shader_reset을 해주면 됩니다.

    shader_set(shader0);
    draw_background(background0,0,0);
    shader_reset();

지금 당장은 빨간색으로 경고 표시가 필요해서 찾아서 정리해봤습니다.
좀 더 복잡한 효과가 필요하게 되면 어떻게 하는지 구해서 정리하도록 하겠습니다.





댓글 없음:

댓글 쓰기