[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담Sumin Byeon
이 발표는 넥슨의 신규 개발 게임인 듀랑고의 생태계에 대한 간략한 소개와 OpenCL 을 이용한 병렬 처리에 관한 전반적인 기술적 내용을 다룹니다. 게임 속의 세계에서 지형과 기후, 지질 조건에 맞게 여러 종류의 식물과 광물들을 알맞은 곳에 배치시키는 것이 생태계 시뮬레이터의 역할인데, 이 시뮬레이터는 방대한 양의 계산을 수행합니다. 초기에 만들어진 프로토타입은 이러한 계산을 수행하는데 30분이 넘게 걸렸지만, 병렬처리, 알고리즘 시간복잡도 개선 등의 여러가지 방법들을 통해 그 시간을 11초까지 단축시켰습니다. 구체적으로 어떤 방법들을 시도했었고, 어떤 방법들이 효과가 있었는지 여러분과 그 경험담을 공유하고자 합니다.
2019년 4월 27일에 있었던 한국게임학회 인공지능분과 두번째 모임에 진행했던 <Tensorflow 2.0 튜토리얼 - CNN> 강연자료입니다. CNN 을 처음 접하는 분들을 위해 CNN 의 기본 개념을 짚어보며, Google Colab Sample Code 를 통해 2.0 에서 CNN 을 사용하는 방법을 간단하게 살펴봅니다.
Deep Learning Into Advance - 1. Image, ConvNetHyojun Kim
[본 자료는 AB180 사내 스터디의 일환으로 제작되었습니다.]
딥러닝에 대한 기초적인 이해 및 적용 예시를 알아보고, 인사이트를 공유하기 위해 만들었습니다. 첫번째로 딥러닝이 이미지 프로세싱에 적용된 방식 및, Convolutional Neural Network (ConvNet)의 기초에 대해 다루었습니다.
* 본 스터디 자료는 Stanford 강좌인 CS231n (http://cs231n.stanford.edu)의 내용을 참고했습니다.
32. // Interpolation means normals may not be unit length.
normal = normalize(normal);
// Squaring a unit vector makes the components add to one.
float3 blendWeights = abs(normal * normal);
// For each axis, sample the texture and multiply by the
blend weights.
float4 colorMapValueYZ =
tex2D(colorMapX, worldPos.yz) * blendWeights.x;
float4 colorMapValueXZ =
tex2D(colorMapY, worldPos.xz) * blendWeights.y;
float4 colorMapValueXY =
tex2D(colorMapZ, worldPos.xy) * blendWeights.z;
// Combine the results
float4 colorMapValue =
colorMapValueXY + colorMapValueYZ + colorMapValueXZ;
33. Triplanar texturing
• 자연물 잘 표현
– rock, grass, …
• 인공물 잘 표현 못함
– 날카로운 모서리
– 높은 디테일
35. Using Multiple Materials
• non-uniform 영역 초기화
– black으로 setting
• uniform triangles 렌더링
– blending mode : set
• non-uniform 영역
– blending mode : additively
– material 간 부드러운 전환