그림자의 분류
미술을 전공했거나, 별과 천체에 대해서 관심이 있는 사람은 그림자를 더 세분화하여 분류하는 것을 한번쯤 들어봤을 것이다. 그림자가 그림자이지 무슨 또 나눌게 있는가 생각하기 쉽지만, 그림자의 종류를 어두움의 세기 혹은 광량이 닿는 양에 따라 다음과 같이 세 개로 나눈다. 1) Umbra Umbra는 음영, 혹은 본그림자이다. 빛이 완전히 가려진 영역으로 가장 어두운 그림자이다. 2) Penumbra Penumbra 는 […]
미술을 전공했거나, 별과 천체에 대해서 관심이 있는 사람은 그림자를 더 세분화하여 분류하는 것을 한번쯤 들어봤을 것이다. 그림자가 그림자이지 무슨 또 나눌게 있는가 생각하기 쉽지만, 그림자의 종류를 어두움의 세기 혹은 광량이 닿는 양에 따라 다음과 같이 세 개로 나눈다. 1) Umbra Umbra는 음영, 혹은 본그림자이다. 빛이 완전히 가려진 영역으로 가장 어두운 그림자이다. 2) Penumbra Penumbra 는 […]
Uncanny Valley는 일본의 로봇 공학자 모리 마사히로에 의해서 처음 소개된 말이다. 위키피디아 정의는 다음과 같다. 모리의 이론에 따르면, 로봇이 점점 더 사람의 모습과 흡사해질 수록 인간이 로봇에 대해 느끼는 호감도가 증가하다가 어느 정도에 도달하게 되면 갑자기 강한 거부감으로 바뀌게 된다. 그러나 로봇의 외모와 행동이 인간과 거의 구별이 불가능할 정도가 되면 호감도는 다시 증가하여 인간이 인간에 […]
가마수트라에 게임에서의 색에 관한 좋은 글을 발견해서 한글로 옮긴다. 여름 휴가엔 에어컨 빵빵 방콕 번역하는 게 -_-b 원문은 여기 Link 색깔에 관한 지식은 여러 분야에 걸쳐 영향을 미친다. 물리학, 생물학, 심리학, 예술 그리고 디자인에까지. 아티스트에게는 감정을 창조해 내는 좋은 툴이 되고, 게임 기획자에겐 기능을 강조하기 위해 사용되기도 하며, 마케터들에게는 구별되기 위해 사용된다. 이 글에선 게임에서의 […]
Data Oriented Design (DOD)는 Object-Oriented Design(OOD)와 다른 편에 서 있는 Language Design 개념이다. 말그대로 객체 지향이 아닌, 데이터 지향적인 프로그래밍 설계 방법이다. 대게 OOD에서는 몬스터 클래스를 만들면 아래와 같이 설계한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Monster { Vector3 power; Vector3 velocity; Vector3 position; Quaternion rotation; void render(); }; vector<Monster> monsterList; |
그런데 DOD에서는 아래와 같이 한다.
1 2 3 4 5 6 7 8 9 10 11 |
class MonsterGroup { vector<Vector3> power; vector<Vector3> velocity; vector<Vector3> position; vector<Quaternion> rotation; void render(); }; |
즉, monster의 객체를 따로 정의하고 생성된 몬스터를 리스트에 집어 넣어서 객체별로 따로 움직임을 주는 것이 아닌, 몬스터의 객체를 […]
Are there really programmers with computer science degrees who cannot pass the FizzBuzz test? 정말 CS 전공자가 FizzBuzz Test 정도도 못 짤 수 있나요? Quora에 올라온 질문이다. Fizzbuzz Test란 아래와 같다. 1 ~ 100까지의 숫자를 출력하되, 3의 배수들은 “Fizz”, 5의 배수들을 “Buzz”, 3과 5의 배수들은 “FizzBuzz”를 출력하고 그 외는 그냥 숫자를 출력하는 프로그램을 만들라. CS […]
유니티에서 스크립트가 실행되는 동안 이벤트 함수 호출 순서를 표현한 다이어그램. Unity Execution Order Diagram Tweet This Post
Ted에서 Stanford AI Lab Fei Fei 교수가 강연하는 것을 잠시 들었다. (How we’re teaching computers to understand pictures) 나는 이 교수가 웃으면서 열정적으로 이야기하는 그 미래가 어떻게 될지에 대한 염려가 앞선다. Machine과 Software가 기존에 사람이 하고 있던 직업들을 상상을 초월할 정도로 빠르게 잠식할 것이고, 대규모 실업이 발생할 것이다. Nick Bostrom이 말한 Super Intelligence가 빠르게 산업을 잠식하면서 […]
유니티에서 Shader를 만드는 방식은 세 가지가 존재한다. 1) Fixed Function Shader Fixed Function Shader는 Programmable Shader를 지원하지 않는 낮은 사양의 하드웨어를 대응하기 위해 주로 사용한다. 만들 때는 ShaderLab이라는 Unity 내부에서 정한 언어를 사용하게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Shader "MyShader" { Properties { _MyTexture ("My Texture", 2D) = "white" { } // other properties like colors or vectors // go here as well } SubShader { // here goes the 'meat' of your // - surface shader or // - vertex and fragment shader or // - fixed function shader } SubShader { // here goes a simpler version of the SubShader above that // can run on older graphics cards } } |
2) Vertex/Fragment Shader Vertex/Fragment Shader는 주로 CG라는 nVidia에서 만든 언어로 만들어진다. 가장 Flexible한 쉐이더 프로그래밍 방식으로 하드웨어가 지원하는 한 […]
Language들을 접하다 보면 Concurrency와 Parallelism이란 단어를 접하게 되는데, 한국어로 변역하자면 동시성과 평행성 혹은 동시 실행과 평행 실행인데, 이 둘은 어떤 차이일까? 그 둘의 차이점을 살펴 보려면 먼저 Thread와 Process의 차이부터 논해야 한다. Process와 Thread의 차이는 신입이나 사회 초년생 개발자들이라면 면접 때 한두번은 들어본 질문일 것이다. Thread는 Process와 거의 유사하다. 단지 Thread는 컴퓨터의 자원, 예를들면 메모리와 IO 장치들을 […]
Unity가 5 버젼으로 넘어오면서 Stats 창에서 Draw Calls 의 갯수를 표현하는 부분이 사라졌다. 대신 Batches와 SetPass Calls 라는 항목이 생겼다. 여전히 Profiler에서는 Rendering 파츠에 Draw Calls가 있지만 Draw Call 대신 Batch를 줄이는라 표현으로 유도하는 의도가 보인다. Official Doc에서도 http://docs.unity3d.com/Manual/DrawCallBatching.html 이야기한다. “중요한건 Batch Count야!!!” 라고. 자, 그런데 문제는 Draw Call과 Batch Count와 무슨 차이인가 라는 점이다. 아래에 […]