본문 바로가기

전체 글505

[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.
[HLSL] 챕터12 - 외곽선 찾기 / 양각 효과 외곽선 찾기 // 외곽선이란? 3D 공간을 2D 이미지에 그려넣으면 물체 개념이 없다. 외곽선 정확히 찾기 힘들다. 그러나 명암이나 색조가 다르면 외곽선을 인식할 수 있다. 명암이 확 바뀌는 픽셀을 찾아 외곽선이라 해주자. 비교할 대상이 필요해진다. 주위 픽셀들을 모두 살펴야한다. 살펴보는 픽셀 많아지면 느려진다. 상하 좌우 대각선 한단계만 찾아보는 것을 3x3 두단계 살펴보는 것을 5x5 텍셀을 살펴본다고 표현하겠다. // 컨벌루젼 사용 3x3, 5x5 픽셀 한번에 계산하기 편하게끔 컨벌루션을 사용한다. (convolution) 현재 픽셀 중심으로 그 주위에 있는 픽셀마다 가중치를 곱한다. 그 결과를 모두 더한다. 이 값으로 현재 픽셀의 값을 변경하는 연산이다. 행렬 형태로 저장한 가중치의 집합을 커널.. 2023. 3. 21.