본문 바로가기

전체 글612

[GLSL] 1 - What is shader? // 셰이더 특징 셰이더는 스크린 위에 낱개의 픽셀마다 실행된다. 실행은 모두 한번에 일어난다. 즉, 픽셀마다 연산이 다르다. 색을 출력하는 하나의 프로그램이자 함수인셈이다. 그리고 컴파일되어 굉장히 빠르다. // 쉐이더가 빠른 이유 parallel processing 개념에 대해 알아야한다. CPU는 하나의 큰 공장같은 파이프이다. 각 파이프는 thread라고도 부른다. 문제는 작은 작업들이 스크린 위에 픽셀개수만큼 반복되어야 한다는 점이다. 800x600 레졸루션의 게임이라고 하면 480,000개의 픽셀들이 매 프레임 계산되어야 한다. 이 문제를 풀기위해 등장하는 솔루션이 있다. 바로 parellel processing이다. 강력한 마이크로 프로세서를 몇개 또는 큰 파이프를 쓰는대신, 매우 작은 마이.. 2023. 4. 14.
[GLSL] 0 - 참고사항 - 원문 출처 https://thebookofshaders.com/ - 앞으로 업로드 될 게시글은 위 링크의 내용을 핵심만 추려 요약한 것이다. - 해당 사이트의 자체 한글 번역된 내용, deepl, chat GPT 중 중 번역이 더 매끄로운 것을 사용하였다. - 일부 번역이 이상한 경우, 문맥에 맞게 수정하였다. 2023. 4. 14.
[서평] 위라클 감상한 사람이 역경을 이겨내고, 다른 사람의 희망이 되기 까지의 여정이 너무나 감동적이다.기꺼이 기쁨을 선택하는 자세를 보며, 나 자신을 많이 돌아보게 된다. 메모나는 살아있지도 죽어있지도 않은 그 경계선 어딘가에서 발버둥 치고 있었다. 중환자실에서의 물 적신 솜은 내게 오아시스 같았다.전신이 마비 되었다고해서 기쁨을 느낄 수 있는 마음마저 마비되진 않는다.나는 오늘도 기쁨을 선택한다. 지우는 환자인 나보다 늘 본인이 먼저 경험하였다.재활기구는 직접 다 사용해보았다. 언터처블 1%의 우정 내용.장애인이라고해서 특별히 대하지 않았다.(장난스럽게)놀리는가 하면 약올리기도 했다.온전히 바라봐주는 드리스가 좋았다.내 장애는 사지마비가 아니야. 아내 없이 살아야한다는 거지.필립은 자신의 장애를 잊게 해줄 사람이 .. 2023. 4. 10.
[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.
[서평] 타인의 마음 (소시오패스) 자기계발에 열중하기 시작하면서 시간을 잘 쓰고 싶다는 생각을 하게 됐다. 계획을 짜고 시간을 쪼개 쓰다 보니 부작용이 생긴다.바로 여유를 잃는 것이다. 이러한 마음이 심해지면, 소시오패스 성향이 강해지는 길 일수 있음을 깨닫게 해주는 책이다.점점 더 지인들과의 대화 중에도 다음 일정 있는데,다음 공부 해야하는데... 하는 생각을 할 때가 늘어났기 때문이다. 이런 태도에 깊이 반성하고,무엇이 인생에 있어서 정말 중요한 것인지 다시 생각해보는 계기가 되었다. 메모소시오패스가 이런 성향을 보이는 가장큰 이유는 시간을 아까워 하기 때문이다.자기 외의 사람들에게 시간을 쓰는 것을 극단적으로 싫어한다.공감도 하기 싫고, 공유도 싫고, 배려의 말을 할 시간도 없다.공감하지 못하는 것은 상대에게 질문하고 대답할 시간을.. 2023. 3. 28.