출처 : http://hyeonstorage.tistory.com/256#recentComments [개발이 하고 싶어요]


STL에 들어가기 전에 자료구조라는 건 무엇인지 한번 살펴보겠습니다.


자료구조란?


자료(Data)란 현실 세계로부터 수집한 사실,개념의 값 또는 집합입니다.

흔히 가공되지않은 것을 부르며 자료를 가공된 것을 정보(Information) 이라고 부릅니다.


자료구조(Data Structure)란 자료의 집합을 의미합니다.

각 원소들 사이의 관계가 논리적으로 정의된 일정한 규칙에 의하여 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 조직적,체계적으로 구분하여 표현한 것을 말합니다.


자료 구조는 작업의 효율성,추상화,재사용성을 증가시키기 위하여 상황에 따른 적절한 자료구조를 선택하여 사용해야 합니다.

자료의 처리를 좀 더 효율적으로 하기 위해선 


자료의 처리시간

자료의 크기

자료의 활용 빈도

자료의 갱신 정도

프로그램의 용이성


을 따져야 합니다.


자료 구조는 크게 선형구조와 비선형 구조로 나뉘어져 있습니다.


선형 구조 : 배열,연결리스트,스택,큐,데크

비선형 구조 : 트리,그래프





'프로그래밍 > STL & 자료구조' 카테고리의 다른 글

1. STL 이란?  (0) 2017.12.30
Posted by Dongkey
,

https://www.slideshare.net/msparkms/ssao-15650492 참고했습니다.


SSAO는(Screen Space Ambient Occlusion, SSAO) 의 약자입니다.

AO의 결과값을 실시간으로 효율적으로 예측하는 기법입니다. 

이 기법은 크라이텍의 블라디미르 카잘린에 의해 개발되었습니다.


Screen Space ( 화면 공간 ) 이란 화면에 표시되는(모니터로 보는) 공간을 나타내는 것입니다.

즉 화면 공간만 AO 계산을 하기 때문에 AO 의 무거운 계산을 많이 덜 수가 있습니다.

SSAO는 텍스처에 저장된 씬은 깊이 버퍼를 분석하여 AO의 근사치를 계산합니다.


이제 SSAO 의 알고리즘을 살펴 보겠습니다.



카메라 ( Screen) 기준으로 깊이 버퍼를 비교합니다.

주변픽셸의 depth buffer 데이터를 비교해 AO의 알고리즘을 적용 시킵니다.



알고리즘을 구한뒤 경계부분은 유지를 하면서 노이즈를 부드럽게 변환 시키면



이런 결과값을 구할 수 있습니다.



다른 이미지와 잘 섞으면 훨씬 현실감있는 이미지를 만들 수 있습니다.



SSAO의 장점

씬이 아무리 복잡해도 독립적입니다.

데이터 전처리가 불필요하며 시스템 메모리의 할당이나 로딩 시간이 없습니다.

동적 씬과 동작합니다.

화면의 모든 화소마다 동일하고 일정한 방법으로 동작합니다.


이번장은 여기까지 알아보겠습니다. 




Posted by Dongkey
,

Ambient Occlusion 이란?


빛의 차폐로 인한 감쇠 근사치를 구하는 이펙트입니다.

쉽게 말해서 구석진 부분을 훨씬 더 어둡게 하여 더욱 자연스럽고 사실적인 느낌을 낼 수 있도록 하는 것입니다.여기에 이미지 설명을 입력하십시오.


출처 : https://gamedev.stackexchange.com/questions/23/what-is-ambient-occlusion


AO의 알고리즘

출처 : http://blog.naver.com/PostView.nhn?blogId=daehuck&logNo=220449224224&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=true&from=search


한 점(P) 로 노말기준 반원을 그립니다(뒤는 오브젝트들이 연결되어 있으니)

A의 경우보다 B의 경우게 차폐되는 양이 늘어나므로 더 구석진 곳으로 되어있다는 것을 알수가 있습니다. 그러므로 차폐의 양에 따라 더 어둡게 처리를 해주면 구석진 곳이 어두워 지게 됩니다.


AO의 알고리즘은 정확하게 계산할수록

퀄리티 Up 이 되고 퍼포먼스는 Down이 됩니다.

(이론상은 가능하지만 실시간 렌더링하기엔 매우 무거움)


AO(Ambient Occulusion)를 실시간 렌더링을 하기에는 매우 무거운 작업입니다.

보통 회색조(0~1) 텍스처 또는 정점 색을 통해 조절을 했었습니다.

현재에는 많은 기법들이 나와있습니다. SSAO,HBAO,HBAO+ 등이 있지만 

이번 장은 AO에 대해서만 알아보겠습니다. 


다음 장은 SSAO 에 대해서 더 알아보겠습니다.


Posted by Dongkey
,

일반적으로 어플리케이션은 각 운영체제의 특정 플렛폼 전용의 네이티브 코드로 만들어야 합니다.

동일한 프로그램을 여러 플랫폼으로 돌아가게 만들려면 해당 플랫폼의 맞는 네이티브 코드로 다시 작성을 해야하는 문제점이 있었습니다.

 이러한 문제점을 해결하기 위해 2002년 MS에서 닷넷 프레임워크(.Net Framework)를 발표합니다.


.NET Framework 란?

 - MS에서 개발한 윈도우 프로그램 개발 및 실행 환경입니다.네트워크 작업,인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임이라는 이름의 가상 머신 위에서 작동합니다.


공통 언어 런타임 ( Common Language Runtime , CLR )

 - 가상 머신


공통 언어 기반 ( Common Language Infrastructure , CLI )

 - 어플리케이션의 개발과 실행 시 언어에 종속적이지 않은 플랫폼을 제공합니다.


XML 지원

Posted by Dongkey
,

프로그램 실행 시 운영체제에 의해서 마련되는 메모리의 구조는 크게 네 개의 영역으로 구분되어 있습니다.


코드 영역 ( Code Area  ) : 프로그램의 코드가 저장되는 메모리 공간. CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행을 합니다.


데이터 영역 ( Data Area ) : 전역변수와 static 변수가 할당됩니다. 즉, 이 영역에 할당되는 변수들은 프로그램 종료 시까지 남아있게 된다는 특징이 있습니다.


힙 영역 ( Heap Area ) : 데이터 영역에 할당되는 변수와 스택 영역에 할당되는 변수들은 생성과 소멸의 시점이 이미 결정되어 있습니다. 프로그래머가 원하는 시점에 변수를 할당하고 또 소멸하도록 지원을 하는 변수들이 할당되는 영역이 힙 영역입니다. 런 타임에 크기가 결정됩니다.


스택 영역 ( Stack Area ) : 스택 영역에는 지역변수와 매개변수가 할당됩니다. 함수를 빠져나가면 소멸된다는 특징이 있습니다. 컴파일 타임에 크기가 결정됩니다.

 

Posted by Dongkey
,