Kotlin 에 익숙해지기 : 낯선 문법들 정리 #3

람다 표현식 : https://kotlinlang.org/docs/lambdas.html 코틀린에서 함수는 first-class 이다. 이 의미는 함수도 객체처럼 변수에 저장도하고, 인자로 넘기고, 리턴값으로 돌려줄 수도 있다는 얘기. 이와같이 다루기위해 함수 타입의 정의가 필요한데 다음과 같이 한다. 람다 표현식(Lambda expression)은 표현식이면서 하나의 함수로 syntax예제는 다음과 같다. 람다 표현식은 함수와 똑같이 중괄호로 묶인다. 파라미터를 나열하는 것으로 시작하여 화살표 ‘->’ 를 쓰고 표현식 바디부분을 […]

안드로이드 빌드 구성하기 #1

JDK 안드로이드 스튜디오를 사용해 빌드하면, 자체적으로 설정된 JDK를 사용한다. sudio.jdk 디렉토리가 있음. 또는, JetBrains Runtime(JBR)이라고 JDK확장버전을 안드로이드 스튜디오랑 함께 배포하게 되는데, 이를 사용하고 이 방법이 권장된다. 커맨드 라인으로 빌드하게 되면, JAVA_HOME을 찾고 없으면 PATH에 있는 java를 실행하게 되는데, 이 경우 안드로이드 스튜디오와 JDK가 안맞게 된다. 같이 사용한다면, 두 버전을 맞춰줘야 함. 빌드 할 때 처음에는 […]

Godot 3D rendering #4 : Geometry Transforms

앞에서 레이 트레이싱에 대해 개념적으로만 간단히 알아봤다. 레이 트레이싱이 현실의 빛을 시뮬레이션 하는 방법이기 때문에, 이론적으로는 가장 명확하고 단순하겠지만, 엄청난 계산량으로 인해 리얼타임 렌더링에서 사용하기엔 제한적이다. 일반적인 리얼타임 렌더링은 두단계로 나뉠 수 있는데, 첫번째로 Geometry Transform들을 통해서 3D 공간의 오브젝트를 스크린 스페이스로 옮겨오면서 어떤 부분들이 보여지는지 판단하는 과정이 필요하고, 두번째로 이렇게 옮겨온 오브젝트를 스크린의 각 […]

Godot 3D rendering #3 : Ray Tracing

먼저 말해둘 점은 Godot 3.x 버전이 OpenGL ES를 이용하기 때문에 ray tracing은 지원되지 않는다. 여기서 다룰 내용은 Godot과는 무관하다. 또한, 자세한 수학적 계산은 하지않고 직관적인 내용만 다루고 있다. 수학적 계산이 궁금한 사람은 https://www.scratchapixel.com 를 참고하기 바란다. 3D 렌더링 관련해서 여기만큼 자세하고 수학적인 설명을 하고 있는 웹 문서를 보지 못했다. Ray Tracing은 가장 현실을 시뮬레이션해서 렌더링하는 […]

Godot 3D rendering #2 : Anti-aliasing

지식이 정확하지 않은 상태에서 어설프게 정리했던 내용이라, 내용의 주를 이루는 Anti-aliasing으로 제목을 바꾸고 SSAA와 MSAA의 차이점을 명확하게 다시 정리했다. 저번 포스팅에서 카메라에 대해 얘기하며 프로젝션에 대해 다뤘었다. 3D 공간의 오브젝트를 2D 화면으로 매핑하는 내용이었다. 수학적으로는 이것으로 충분하겠지만, 물리적으로 우리의 2D 공간은 모니터가 되고, 픽셀로 이루어진 제한된 해상도를 갖게 된다. Rasterization은 이 제한된 해상도의 픽셀공간에 그리는 […]