본문 바로가기

셰이더 (Shader)/The Art of Code5

[GLSL] Starfield - 5(완) : 마우스 상호작용, 별 팍 사라지는 이슈 수정 #define NUM_LAYERS 8.0 mat2 Rot(float a) { float s = sin(a), c = cos(a) ; return mat2(c, -s, s, c) ; } float Star(vec2 uv, float flare) { float d = length(uv) ; float m = 0.02/d ; m*= 1.5 ; float rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * flare ; // 대각선 레이 uv *= Rot(3.1415/4.0) ; rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * 0.3 * flare ; m *= smoothstep(1.0, 0.2, d) ; r.. 2023. 4. 8.
[GLSL] Starfield - 4 : 별 깊이감, 움직임 추가 #define NUM_LAYERS 6.0 mat2 Rot(float a) { float s = sin(a), c = cos(a) ; return mat2(c, -s, s, c) ; } float Star(vec2 uv, float flare) { float d = length(uv) ; float m = 0.02/d ; m*= 1.0 ; // 십자 레이 float rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * flare ; // 대각선 레이 uv *= Rot(3.1415/4.0) ; rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * 0.3 * flare ; m *= smoothstep(1.0, 0... 2023. 4. 8.
[GLSL] Starfield - 3 : 별 여러개 만들기 (2) mat2 Rot(float a) { float s = sin(a), c = cos(a) ; return mat2(c, -s, s, c) ; } float Star(vec2 uv, float flare) { float d = length(uv) ; float m = 0.02/d ; m*= 2.0 ; // 블러빛 밝기 // 십자 레이 float rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * flare ; // 대각선 레이 uv *= Rot(3.1415/4.0) ; rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * 0.3 * flare ; m *= smoothstep(1.0, 0.2, d) ; // 무한.. 2023. 4. 8.
[GLSL] Starfield - 2 : 별 여러개 만들기 (1) mat2 Rot(float a) { float s = sin(a), c = cos(a) ; return mat2(c, -s, s, c) ; } float Star(vec2 uv, float flare) { // flare = 섬광(밝기) float d = length(uv) ; float m = 0.02/d ; // 0.02까지는 완전히 1, 0.02 이후부터는 서서히 falloff // 십자 레이 float rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * flare ; // 대각선 레이 uv *= Rot(3.1415/4.0) ; rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; m += rays * 0.3 * flare.. 2023. 3. 30.
[GLSL] Starfield - 1 : 별 만들기 void mainImage( out vec4 fragColor, in vec2 fragCoord ) { vec2 uv = (fragCoord-(iResolution.xy*0.5))/iResolution.y ; uv *= 3.0; // 결과적으로 별의 크기가 된다. 값이 클수록 별이 작아진다. vec3 col = vec3(0.0); // 동그라미 글로우 float d = length(uv) ; float m = 0.02/d ; // 동그란 모양. // 0.02까지는 완전히 1, 0.02 이후부터는 서서히 falloff되면서 글로우 형태가 된다. // 별모양 float rays = max(0.0, 1.0-abs(uv.x*uv.y*1000.0)) ; // x 그라데이션, y 그라데이션을 서로 곱하고, 강하게 .. 2023. 3. 30.