[GLSL] 3 - Uniforms, gl_FragCoord
uniform // uniform이란 Thread들은 서로에 대해 데이터를 공유할수 없더라도, CPU에서 인풋을 받을수 있다. 이 인풋들은 모든 Thread들에 있어서 일정(uniform)하고 read only이다. 즉, 읽을순 있어도 변경할 수 없다. 이런 인풋들을 uniform이라고 한다. float, vec2, vec3, vec4, mat2, mat3, mat4, sampler2D, samplerCube 등의 데이터 타입을 지원한다. 유니폼 값들은 보통 floating pont precision설정이 끝난 후 선언된다. // uniform 선언 위치 #ifdef GL_ES precision mediump float; #endif uniform vec2 u_resolution; // Canvas si..
2023. 4. 14.
[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.