티스토리 뷰
게임에서 마우스가 over되거나 이미지가 선택되었음을 표시하는 방법으로 이미지에 외곽선을 그리는 방법을 사용한다.
예)League of Legend
위 효과를 2D에서 Shader를 이용하여 내려 한다.
Theory
fragment shader에서 현재 fragment의 상, 하, 좌, 우 fragment의 알파값을 읽어서 해당 fragment가 외곽에 있는 것인지 식별한다.
외곽에 있는것으로 식별된 fragment는 기존 texture의 rgb가 아닌 외곽선 rgb값을 가지도록 한다.
Code
#ifdef GL_ES
precision lowp float;
#endif
varying vec2 v_texCoord;
void main()
{
vec4 color = texture2D(CC_Texture0, v_texCoord);
// gl_FragColor = color;
float aa = 4.0*color.a;
aa -= texture2D(CC_Texture0, v_texCoord + vec2(0.01, 0.0)).a;
aa -= texture2D(CC_Texture0, v_texCoord + vec2(-0.01, 0.0)).a;
aa -= texture2D(CC_Texture0, v_texCoord + vec2(0.0, 0.01)).a;
aa -= texture2D(CC_Texture0, v_texCoord + vec2(0.0, -0.01)).a;
vec4 col;
if(aa == 0.0)
col = color;
else
col = vec4(1.0, 0.0, 0.0, aa);
gl_FragColor = col;
}
Result
->
'Programming > Cocos2d-x' 카테고리의 다른 글
cocos2d-x의 custom shader로 Glow 효과내기 (1) | 2015.07.03 |
---|---|
텍스쳐래핑(Texture Wrapping) (0) | 2015.07.03 |
cocos2d-x Reference : 데이터 저장소 UserDefault (0) | 2015.07.02 |
cocos2d-x Reference : 멀티 해상도 (0) | 2015.07.02 |
cocos2d-x Reference : getVisibleSize vs getWinSize (0) | 2015.06.26 |
- Total
- Today
- Yesterday
- 수학
- SOCKET
- SHADER
- C
- rxswift
- 국내여행
- 운영체제
- game
- SwiftUI
- 자료구조
- OS
- ue4
- swift
- 데이터베이스
- winsock
- Git
- ios
- C++
- 알고리즘
- Cocos2d-x
- Spring
- database
- machine learing
- DesignPattern
- Java
- C/C++
- mongoDB
- 드라마
- JSP
- scala
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |