본문 바로가기

IT/Teckweek32

Forward Rendering vs Deferred Rendering Forward Rendering과 Deferred Rendering의 차이는 무엇일까? ...를 알아보기 전에, 먼저 Rendering의 개념부터 간단히 정리해보자. Rendering이란? 렌더링 또는 이미지 합성(rendering 또는 image synthesis)은 컴퓨터 프로그램을 사용하여 모델 또는 이들을 모아놓은 장면인 씬 파일(scene file)로부터 영상을 만들어내는 과정을 말한다. 출처 : https://ko.wikipedia.org/wiki/렌더링 Rendering 기술은 3D 작업에서 Graphics Pipeline을 따라 수치값들을 이용하여 3D 물체를 2D로 연출한다. Rendering 의 기본 요소는 [형태, 음영, 색상, 공간, 재질]이 있다. 또한, Rendering 에는 다.. 2022. 12. 29.
GPGPU (General Purpose GPU) GPGPU란? General-Purpose computing on Graphics Processing Units의 머릿글자로, 직역하면 'GPU의 범용 연산'. CPU가 맡았던 연산을 GPU에도 사용해 연산 속도를 향상 시키는 기술이다. 흔히 '하드웨어 가속'이라고 하면 GPU를 가리키는 경우가 많다. CPU에는 대부분의 앱 처리를 수행하는 몇 개의 강력한 코어가 있지만 GPU에는 복잡한 병렬 계산을 수행할 수 있는 수백 또는 수천 개의 빠르고 효율적인 코어가 있다. 즉, CPU는 여러 스레드에서 하나의 작업을 정말 잘 수행하고 GPU는 동시에 작은 작업을 모두 수행할 수 있다는 것을 말한다. (둘의 차이점은 위의 영상에서 잘 볼 수 있다.) 그래픽카드가 GPU가 된 이유 초기의 그래픽 API들과 그것을.. 2022. 12. 13.
Rendering Pipeline Rendering Pipeline이란? Rendering : 2차원의 화상에 광원·위치·색상 등 외부의 정보를 고려하여 사실감을 불어넣어, 3차원 화상을 만드는 과정을 뜻하는 컴퓨터그래픽스 용어 [두산백과] Pipeline : 생산 라인 등과 같이 여러 공정별로 생산 라인이 나열되어 있고 동시에 공정별 프로세서가 가능하게 하는 것. [컴퓨터인터넷IT용어대사전] 즉, 렌더링 파이프라인이란 3차원으로 만들어진 모델을 2차원에 투영하는 렌더링 공정을 자세하게 표현한 것이라고 볼 수 있다. 렌더링 과정은 간단하게 요약하면 다음과 같다. (렌더링 API 마다 구체적인 과정은 다르지만) 점(vertices)을 3개 받아온다 → 점의 위치를 그린다 (화면 밖의 점은 그리지 않음) → fragment를 찾아낸다 (Ra.. 2022. 11. 12.
BlendMode Color Blending이란? 말 그대로 색상 혼합을 의미한다. 이를테면 위의 Slack 로고에는 몇 가지 색상이 있을까? 정답은 총 8가지이다. 기본 색상 4개가 있고, 겹치는 곳에 새로운 색상이 만들어진다. 이처럼 겹치는 색상을 교차하여 Color를 Blend 시키는 것을 의미한다. 그럼 BlendMode는 뭘까? BlendMode 란? 블렌드 모드 (또는 믹싱 모드)는 디지털 이미지 편집에서 두 개의 서로 다른 레이어가 혼합되는 방식을 결정한다. 대부분의 응용 프로그램에서 기본 블렌드 모드는 낮은 레이어를 높은 레이어로 가려서 단순히 가장 위에 있는 레이어를 보여준다. 그러나 각 픽셀은 수학적으로 표현되기 때문에, 두 개의 레이어를 다양한 방법으로 표현할 수 있다. 응용 프로그램(이를테면 포토샵).. 2022. 11. 5.
SCM (Software Configuration Management) SCM만 들었을 때는 용어가 낯설다고 생각이 들었는데, 한국어 번역이 형상관리라는 걸 듣고 아 git~ 라고 넘어갔던 기억이 있다. 게임회사에서 일하면서 처음으로 Perforce라는 형상관리 시스템을 써보고 있는데, 형상관리란 무엇인지, 형상관리 시스템에는 어떤 것들이 있는 지에 대해 알아보자. 💡 소프트웨어 구성 관리(Software Configuration Management) 또는 형상 관리는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다. 일반적으로 형상 항목(Configuration Item)이라는 형태로 작업 산출물을 선정하고, 형상 항목 간의 변경 사항 추적.. 2022. 10. 26.
CI/CD CI (Continuous Intergration) / CD (Continuous Deployment) CI/CD라는 말을 들어봤는가? 사실상 큰 프로젝트를 진행하지 않았다면 조금 낯선 용어일 수도 있다. 그러나 보통 회사에서 프로젝트에 참여하면, CI/CD를 직접 설정하여 꾸준히 진행하는 경우가 많다. CI/CD라는 건 뭘까? 용어를 직역하자면 지속적 통합과, 지속적 배포이다. 말 그대로 커밋된 소스코드를 지속적으로 합치고, 배포하는 과정을 의미하는 것이다. 조금 더 자세히 알아보자. CI란? 빌드/테스트 자동화 과정이다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항.. 2022. 10. 6.
로드밸런싱 면접 질문으로 이런 류의 질문을 꽤 들어봤을 것이다. (특히나 이커머스 계열의 회사이거나 서버 직무라면) "안정적인 인프라를 만들기 위해서는 어떻게 해야할까요?" "블랙프라이데이와 같은 많은 트래픽이 예상되는 상황에서 미리 대처할 수 있는 방법은 무엇이 있을까요?" 그냥 로드밸런서를 사용해서, 서버를 계층화하여 부하를 분산시킨다. 와 같은 심플한 대답을 하다가, 최근에 본 다대다 면접에서 어플리케이션 / 서버 파트별로 꽤 상세하게 대답한 다른 면접자를 보면서 한 번 되짚어볼 필요가 있다고 생각해서 주제를 선정하게 되었다. 기본적으로 많은 트래픽이 발생한 경우 서버에서 대처하는 방법은 크게 2가지이다. 스케일 업(Scale Up): 서버에 CPU나 RAM 등을 추가하여 서버의 하드웨어 스펙을 향상시키는 방.. 2021. 6. 10.
Reactive Programing이란? * 이 글은 전적으로 개인적으로 공부하면서 중얼거리는 글입니다... 틀린 내용이 많을 수도 있습니다.. 리액티브 프로그래밍....맨날 들을 때마다 머리가 아프다... 왜냐면 아직도 난 이것에 대해 감을 못잡았기 때문이다... 비동기적인 데이터를 처리할 때 유용하다는 건...잘..알겠다... 코딩하면서 쓰다보면 대충 그런거 같더라... 대충 그런거 같다로 넘기는 것들이 한 열댓개가 넘어가자 이해도가 미쳐돌아가기 시작했다.. 살려줘.... 심지어 RxJava, RxKotlin 같은 식으로 쓰는데 나는 Reactive Programing == Rx라고 생각했건만 그것도 아니라는데, 미쳐돌아가는 대 환장 이해도속에 공부를 시작해보도록 ... 하자.. 자칫하다간 아무도 이해못하는 웅앵웅이 될 수 있으니 아주 처음.. 2021. 4. 28.
프로세스와 스레드 프로세스는 실행중인 프로그램을 의미한다. (메모리에 올라와서 실행되고 있는 프로그램의 인스턴스) 프로세스는 코드, 데이터, 힙, 스택 별로 각각의 주소공간에 독립적으로 할당받는다. 반면 스레드는 스택만 따로 할당 받고 나머지는 서로 공유한다. 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는 데에 비해 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용한다. 스레드는 프로세스의 실행되는 여러 흐름의 단위를 의미한다. 프로세스마다 메인 스레드를 포함하여 최소 1개의 스레드를 소유한다. 멀티프로세스의 장점은 안전성이지만, 각각의 메모리 공간을 갖고 있어 작업량이 많을 수록 오버헤드가 발생한다. 반면 멀티 스레드는 독립적인 프로세스에 비해 공유 메모리를 사용하여 시간, 자원 손실이 적다는 장점이 있지.. 2021. 4. 25.
반복자 패턴(Iterator Pattern) 나는 왜... 시험이 끝나고나서야 개념 정리를 하는 걸까..? 슬프니까 바로 정리해봅니다... C++ 개념에서 최근에 G가 물어본 적이 있었다. .과 ->의 접근 방식 차이었는데, 포인터로 접근할 건지, 다이렉트로 접근할 건지 차이 아닌가? 하면서 대충 넘겼던 기억이 난다. 이게 무슨 데드 플래그도 아니고 그때 나도 다시 한번 찾아봤더라면 기억했을 것 같은데 하하 더보기 접근법에 대해 먼저 간단히 짚고가자면, 1. -> for accessing object member variables and methods via pointer to object Foo *foo = new Foo(); foo->member_var = 10; foo->member_func(); -> (arrow operator)는 객체를 .. 2021. 3. 27.