본문 바로가기

분류 전체보기468

고난 속에 기쁨 (위라클 서평) 감상 한 사람이 역경을 이겨내고, 다른 사람의 희망이 되기 까지의 여정이 너무나 감동적이다. 기꺼이 기쁨을 선택하는 자세를 보며, 나 자신을 많이 돌아보게 된다. 메모 나는 살아있지도 죽어있지도 않은 그 경계선 어딘가에서 발버둥 치고 있었다. 중환자실에서의 물 적신 솜은 내게 오아시스 같았다. 전신이 마비 되었다고해서 기쁨을 느낄 수 있는 마음마저 마비되진 않는다. 나는 오늘도 기쁨을 선택한다. 지우는 환자인 나보다 늘 본인이 먼저 경험하였다. 재활기구는 직접 다 사용해보았다. 언터처블 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.
[HLSL] 챕터11 - 흑백/세피아 사진 만들기 // 원리 2D 이미지를 가져다 한번에 고쳐버리기 마치 포토샵에 여러가지 필터 적용하듯이. 이를 포스트프로세싱이라고 한다. (post processing) 렌더링 결과 2D 이미지로 저장하려면? 렌더타킷 사용한다. 여기에 그려두고 다른 색으로 인화하는 것이 쉽다. 포스트프로세싱 기법을 어떻게 입히나? 3D 그래픽 파이프라인 관점에서. 화면을 차지하는 모든 픽셀마다 픽셀셰이더를 호출한다. 하지만 임의로 픽셀셰이더 호출할 수 있는 방법 없다. 래스터라이저의 도움을 받아야하기 때문이다. 래스터라이저가 작동하려면 정점셰이더에서 정점 출력해주어야한다. 그래서 화면을 꽉 채우는 사각형을 그린다. 여기에 2D 텍스쳐를 씌운다. 화면 가득 채우는 사각형은 곧바로 화면공간(투영공간)에 있다고 가정한다. 개념상 화면에 존.. 2023. 3. 21.