티스토리 뷰
게임에서 마우스가 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
- 자료구조
- rxswift
- mongoDB
- ue4
- Spring
- ios
- SOCKET
- 국내여행
- winsock
- 알고리즘
- C++
- Git
- game
- 수학
- 드라마
- database
- 데이터베이스
- OS
- SwiftUI
- C
- machine learing
- C/C++
- Cocos2d-x
- Java
- swift
- SHADER
- 운영체제
- scala
- DesignPattern
- JSP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |