페이지 261|ISBN ISBN 안내 레이어 보기 9788993383584|판형 B5, 188*257mm
참고 http://www.mathworks.com/matlabcentral/answers/14374

 

function [T1,T2,T3,T4]=TEST(........)
global alpha_b rho_b direction_b

persistent initialzed;


if isempty(initialze)
    initialze=1;
    zetam=atan2(z,x);

    rho_b=sqrt(xm^2+zm^2);
    alpha_b=pi;
    direction_b=0;
end

.

.

..

 

http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=43180

 

 

GPGPU를 이용한 레이트레이싱

월간 마이크로소프트웨어 2013년 7월호 / Smart & Contents

GPGPU(General-purpose GPU)는 GPU의 강력한 성능을 일반적인 컴퓨팅 분야에 쓰도록 지원하는 것이다. GPGPU 활용을 위해서는 여러 가지 방법이 있는데, 현재는 OpenCL이나 CUDA를 이용하는 것이 보편화된 방법이다. 이 글에서는 CUDA를 이용해서 레이트레이싱(raytracing)을 하는 과정의 기초 부분을 살펴보기로 한다.

김혁 hybrid@nexon.co.kr|서강대학교 대학원에서 컴퓨터 그래픽스를 전공하면서 레이트레이싱을 사용한 렌더링 기술을 연구했다. 현재는 넥슨 데브캣 스튜디오에서 신규 게임 프로젝트 K를 개발 중에 있다.

게임에서 사용되는 렌더링 방식은 래스터라이제이션(rasterization)이라고 한다. 각각의 삼각형을 스크린에 투영해 렌더링될 화면의 픽셀 색상을 결정하는 이 방식과는 달리, 레이트레이싱에서는 픽셀(pixel) 기준으로 픽셀에 칠해질 색상을 결정하는 방식으로서 계산하는 방향이 다르다.


< 그림 1> 레이트레이싱

레이트레이싱의 과정을 가장 간단하게 요약하면 다음과 같다.

1) 카메라 정보로부터 스크린의 각 픽셀에 해당하는 광선(ray) 생성
2) 각 광선 기준으로 카메라와 가장 가까운 삼각형을 찾음
3) 그 삼각형과 광선이 교차(hit)하는 지점을 중심으로 셰이딩(shading) 계산을 수행

이 과정에서 속도를 빠르게 하기 위한 알고리즘을 제대로 도입하지 않으면 제 아무리 강력한 GPU 병렬 처리의 힘을 빌린다 하더라도 매우 많은 시간이 걸린다. 빠른 처리를 위해서는 단순히 강력한 하드웨어뿐만이 아니라 적절한 알고리즘과 하드웨어에 대한 이해가 필수적이다.

레이트레이싱을 위한 가장 간단한 구현 방식은 픽셀에 해당하는 광선을 현재 렌더링할 장면(scene)에 있는 모든 삼각형과 교차 검사를 하는 것이다. 이는 굉장히 많은 시간이 걸리기 때문에 일반적으로는 특수한 공간 구조를 만들어 삼각형을 배치한다. 여기서는 BSP트리(Binary Space Partitioning Tree)의 일종인 KD트리(KD-Tree)를 기준으로 설명한다. 최근에는 BVH (Bounding Volume Hierarchy) 방식도 많이 쓰이는 추세다. BVH는 KD트리보다는 동적 장면(dynamic scene)에 적합한 특징을 가지고 있는데, 근본적인 것은 KD트리를 기반으로 하기 때문에 KD트리를 알면 쉽게 이해하고 구현할 수 있다.


< 그림 2> 일반적인 BSP와 KD트리

KD트리
만약 KD트리와 같은 공간가속구조(spatial acceleration structure)를 전혀 사용하지 않는다면 하나의 광선에 대해 (1) 모든 삼각형과 일일이 교차 계산을 하거나 (2) 삼각형을 광선 기준으로 정렬 후 가까운 곳부터 교차 계산을 해야 한다. 공간가속구조는 삼각형을 엄밀하게 정렬하기보다는 공간을 나눠 가까운 곳부터 먼저 계산할 수 있도록 해주는 장치다.


< 그림 3> 광선이 1, 2, 3번의 리프 노드(공간)를 순차적으로 탐색

<그림 3>과 같이 광선은 1, 2, 3번의 리프 노드(공간)를 순차적으로 탐색하게 된다. 1번을 탐색한 후 삼각형이 없기 때문에 넘어가고, 2번 노드에서는 두 삼각형을 모두 교차 계산해 그림의 왼쪽 삼각형이 더 가까움을 알 수 있고, 이미 교차를 했기 때문에 3번의 노드는 탐색할 필요가 없다. <그림 3>에서처럼 공간이 이미 나눠져 있으면 광선 기준으로 가까운 곳부터 탐색해 빠르게 교차 계산을 수행할 수 있다.

이때 KD트리를 위한 레이트레이싱 알고리즘은 이미 많이 최적화돼 왔고, 많은 참고자료들이 존재한다. 그 내용들은 다른 자료들을 참고하길 바라면서 CUDA를 이용한 레이트레이싱에 집중해 설명하기로 한다.

CUDA의 이용
지면 관계상 여기서 제시되는 소스 코드나 레이트레이싱 구현에 관한 내용은 생략한다. 마찬가지로 CUDA에 관한 기본적인 내용 또한 가능한 간단하게 설명한다. CUDA를 이용하면 GPU를 이용해서 많은 연산을 병렬로 처리할 수 있다. 전부는 아니더라도 상당히 많은 부분의 C/C++ 코드를 사용할 수 있긴 하지만, GPU의 처리 구조와 하드웨어 구조를 이해해야만 GPU의 성능을 제대로 끌어낼 수 있다(상황에 따라서는 잘못 구현할 경우, 충분히 GPU에 적합한 응용 분야라 하더라도 멀티스레딩을 이용한 CPU 계산보다 느릴 수도 있다).

최근의 하드웨어는 많이 나아진 편이지만, GPU 연산을 위한 처리상의 제약사항은 제법 많은 편이다. 레지스터 사용 개수, 메모리 액세스, 한번에 병렬 처리하는 양(당연한 말이지만, GPU에서는 모든 GPU 내의 스레드가 동시에 수행되지 않는다)을 프로그래머가 고려해야 하고, 이런 이슈들로 인해 많은 성능 차이가 날 수 있다. 여기서 몇 가지 이슈를 다뤄본다.

먼저 각 스레드에는 독립적인 광선 하나씩이 배분된다. 교차하는 삼각형 중 가장 가까운 삼각형을 찾아야 하는데, 앞서 설명했듯이 트리를 탐색하고 리프 노드에 도달할 경우 리프 노드에 있는 삼각형들과 교차 검사를 한 후 교차하는 삼각형들이 없을 경우 다른 노드를 탐색하게 된다. 이때 다른 노드를 찾아가는 과정에 스택을 사용하게 된다. 이 스택의 액세스 빈도는 상당히 높다.

struct StackInfo;
StackInfo SharedStack[STACK_SIZE];

CUDA 코드 내에서 이 스택을 위와 같이 로컬 변수와 같이 선언할 경우 일반적으로 글로벌 메모리에 할당되게 된다. CUDA에서 글로벌 메모리는 굉장히 느려서 잦은 읽기/쓰기 처리에 적합하지 않다.

__shared__ StackInfo SharedStack[STACK_SIZE];

만약 CUDA 코드 내에서 위와 같이 선언해주면 이 메모리는 쉐어드 메모리(shared memory)에 잡히게 된다.


< 그림 4> 스레드와 불럭, 그리고 메모리

CUDA는 여러 개의 스레드가 하나의 블럭을 형성하는데, 이 블럭에는 각각 일정 양의 쉐어드 메모리를 할당할 수 있다. 블럭은 프로그래머가 지정한 개수만큼 여러 개의 스레드로 구성된다. 즉, 여러 스레드가 모여서 1개의 블럭을 형성하고, 같은 블럭 내의 여러 스레드는 쉐어드 메모리를 공유해서 사용한다(<그림 4>를 보면 알 수 있듯이 두 스레드는 각각 자신만의 레지스터와 로컬 메모리를 가지고 있고 쉐어드 메모리를 공유해서 사용한다). 

공용 메모리는 무척 빠르지만 용량이 매우 제한돼 있고, 더욱이 공용 메모리를 많이 사용할수록 L1 캐시 메모리의 사용이 제한된다. 실제 우리가 캐시 메모리를 제어하진 않지만, 로컬 메모리나 글로벌 메모리를 액세스할 때는 캐시 메모리를 통해 접근하게 되는데, 공용 메모리를 사용할 경우 그만큼 L1 캐시 메모리의 사용량이 줄어든다. 반면 글로벌 메모리는 많은 공간을 가지고 있지만, 상대적으로 속도가 많이 느리기 때문에 프로그래머는 최대한 글로벌 메모리의 액세스를 줄여야 한다는 것을 염두에 둬야 한다.

CUDA 아키텍처에서는 이처럼 여러 메모리가 각각의 장단점을 가지고 있다. 또한 GPU 하드웨어에 따라 성능이나 제약에도 차이가 있기 때문에 사용하는 하드웨어의 특성에 대한 이해도 필요하다. 

다시 레이트레이싱의 스택으로 돌아와서 스택을 살펴보자. 사실 레이트레이싱에서 스택은 제법 많은 메모리를 필요로 한다. 렌더링할 장면에 따라 다르지만 스택이 수백 개가 필요한 경우도 많다.


< 그림 5> 자동차의 앞부분을 간략하게 렌더링한 장면(스택 크기를 200개로 잡아서 스택이 부족한 부분은 검은색으로 깨져서 표현됨)

앞서 용량 제약을 말했다시피 일반적인 방법으로는 이렇게 큰 스택을 쉐어드 메모리에 넣을 수 없다. 그리고 용량의 제약이 없는 글로벌 메모리나 로컬 메모리에 할당하기에는 너무 잦은 액세스 때문에 성능 저하에 원인이 될 수 있다. 이러한 제약 속(그리고 딱히 이런 제약과는 무관하게)에서 여러 연구가 진행됐는데, 여기서는 그 중 숏스택(short stack) 방법을 소개하겠다.

__shared__ StackInfo SharedStack[SHORT_STACK_SIZE*BLOCK _SIZE_X*BLOCK_SIZE_Y];
const int stackIndex = SHORT_STACK_SIZE*(tx+ty* BLOCK_ SIZE_X);
StackInfo *Stack = & SharedStack [stackIndex];

이 코드에서 BLOCK_SIZE_X, Y는 CUDA의 블럭 내의 스레드 개수를 2차원 배열로 지정한 형태다. 다음과 같이 CUDA의 커널(ShootRayWithShortStack 함수)을 실행할 때 지정해준다.

dim3 dimGrid( RayCount/BLOCK_SIZE_X/BLOCK_SIZE_Y, 1, 1 );
dim3 dimBlock( BLOCK_SIZE_X, BLOCK_SIZE_Y, 1 );
ShootRayWithShortStack<<<dimGrid, dimBlock>>>(…);

이 과정에서 stackIndex에 해당하는 부분이 각 스레드 자신에게 할당 받은 스택의 시작 주소가 된다. 따라서 &SharedStack [stackIndex]로 스레드 자신의 스택을 사용한다.

단, 여기서는 이 SHORT_STACK의 크기를 크게 잡지 않는다. 1~5개 정도로 매우 작은 양을 할당한다. 그러면 하나의 블럭은 SHORT_STACK*BLOCK_SIZE_X* BLOCK_SIZE_Y만큼의 스택을 쉐어드 메모리에 가지고 있게 되고, 각 스레드는 SHORT _STACK만큼의 자신만의 스택을 얻게 된다. 이런 작은 크기의 스택에서는 금방 스택 오버플로우가 발생하게 된다. 이때의 처리는 간단하게(원형 큐의 방식과 마찬가지로) 가장 아래에 있는 오래된 스택 정보를 삭제하고 새 스택 정보를 위에 넣는다.


< 그림 6> 숏스택에서 오버플로우 발생 시 가장 오래된 스택 정보를 삭제

오버플로우가 발생하지 않는 환경에서는 이 스택을 평소처럼 쓰면 된다. 하지만 작은 스택 크기 때문에 스택은 금방 비게 된다. 스택이 비어 있어서 더 이상 POP을 해야 할 수 없는 상황에서는 리스타트 알고리즘을 사용한다.

리스타트 알고리즘은 사실 매우 간단한데, 부족한 스택 정보를 어떻게 하기보다는 이미 계산한 부분에 해당하는 광선을 잘라내고 트리 탐색을 처음부터 다시 시작하는 것이다.


< 그림 7> 리스타트 알고리즘의 예(이미 탐색한 부분의 광선을 자르고 트리를 처음부터 다시 탐색한다. 이 경우 스택이 필요하지 않음)

<그림 7>에서 윗 그림은 현재 광선이 1에 해당하는 부분을 탐색 완료한 시점이다. 이때 원래는 상단의 인터널 노드에 해당하는 정보를 스택으로부터 얻어 와야 하는데, 스택의 정보가 없기 때문에 <그림 7>의 아래 그림처럼 광선의 꼬리 부분을 잘라낸다. 그리고 트리를 처음부터 다시 탐색하면 1번에 해당하는 리프 노드는 다시 탐색하지 않게 된다.

이 방법을 쓰면 당연히 노드를 중복해서 탐색하게 되는데, 현실적으로 봤을 때 예상외로 중복해서 탐색하게 되는 노드의 비율이 그렇게 많지 않다(<표 1> 및 참고자료 6번 참조).


< 표 1> Daniel R. Horn 등이 실험한 중복 노드의 탐색 비율(Robot 장면)

이처럼 숏스택 방식은 빠른 액세스가 가능한 적은 개수의 스택을 유지하면서도 리스타트 알고리즘을 통해 렌더링에 문제가 없게 하는 특징이 있다. 아무리 수백 개 크기의 스택이 필요하다고 하더라도 그 중에 실제로 잦은 액세스를 하는 것들은 적기 때문에 이러한 방법을 통해 속도 향상을 얻을 수 있다.

그 외의 성능 이슈들
실제로 고려해야 하지만 자세히 설명하지 못한 성능 이슈들은 많이 있다. 삼각형과 광선의 교차 계산은 제법 많은 연산을 필요로 한다. 이 과정을 최소화하기 위해서 삼각형을 미리 Barycentric 좌표계로 변환시켜서 실제 연산 시에 빠르게 수행하도록 하는 방법이 있다. 각 노드에 들어가는 정보도 8바이트로 압축할 수 있다. 

또한 사실 최근 GPU 하드웨어의 속도가 매우 향상됐기 때문에, 어느 정도 레이트레이서의 성능을 올려놓으면, 성능의 병목 지점은 레이트레이싱 처리가 아닌 CPU 메모리(host memory)와 GPU 메모리(device memory) 간의 데이터 전송이 된다. 이를 고려해 최대한 메모리 전송이 일어나지 않게 전반적인 레이트레이서 설계를 하는 것도 중요하다.

지금까지 KD트리가 만들어진 것으로 가정하고 설명했지만, 사실 KD트리는 어떻게 만드느냐에 따라서도 트리를 만드는 속도와 렌더링 속도가 영향을 미친다. 그리고 상대적으로 KD트리는 렌더링 속도가 빠르지만, 새로 트리를 만드는 것은 느린 편이다. 이에 최근에는 KD트리와 상당 부분 흡사한 BVH(Bounding Volume Hierarchy) 방법도 사용된다. BVH는 렌더링 속도는 KD트리보다 느리지만, 트리 업데이트 기능이 있어서(이는 KD트리에서는 불가능) 어느 정도의 동적인 장면에서도 사용할 수 있다.

레이트레이싱을 넘어서
기본적인 레이트레이싱을 수행하는 레이트레이서가 빠르게 구현되면, 여기서 다양한 기법들로 발전시킬 수 있다. 여기서는 광선 기준으로 가장 가까이 교차하는 삼각형을 얻는 것을 설명했는데, 이렇게 교차된 삼각형을 기준으로는 셰이딩, 라이팅을 해야 사실적인 렌더링 결과를 얻을 수 있다. 이 과정에는 기본적으로 다음과 같은 광선의 종류들이 존재한다.

- 주 광선(primary)
- 2차 광선(secondary ray)
- 그림자 광선(shadow ray)

주 광선은 카메라로부터 나오는 광선이다. 2차 광선은 반사각/입사각을 기준으로 해서 반사(혹은 굴절)되는 광선이다. 이 광선을 통해 거울과 같은 물체를 사실적으로 렌더링할 수 있다. 그림자 광선은 조명 방향으로 광선을 쏘아 조명과 셰이딩할 지점 사이에 가리는 물체가 없는지를 검사하는 것이다. 물체가 가린다면 이 부분은 그림자가 지는 부분이 된다. 이런 특징을 본다면 픽셀에 해당하는 주 광선 1개에 대해 여러 개의 2차 광선(보통 2~3개 정도의 단계를 밟는다)을 쏘고, 조명 개수만큼의 그림자 광선을 쏘기 때문에 레이트레이싱에 필요한 교차 검사는 엄청나게 많아진다.

뿐만 아니다. 포톤 매핑(Photon Mapping)을 사용하게 되면 픽셀과 상관없는 조명 기준의 많은 광선(포톤의 경로)을 사용하게 되고, 패스트레이싱(Pathtracing, 경로추적법) 등의 방법을 사용하게 되면 한 방향으로의 반사가 아니라 주변광을 모아야 하기 때문에 훨씬 많은 광선이 필요하게 된다. 이런 상황일수록 레이트레이서의 작은 성능 차이는 큰 결과의 차이를 가져온다.

결론
이 글은 레이트레이싱과 CUDA 모두 익숙하지 않은 독자에게는 혼란스러운 내용이 될 수 있지만, CUDA 사용에 있어서 메모리 사용의 제약이나 제약된 구조가 큰 걸림돌이므로 이를 위해 상황에 맞는 알고리즘들이 연구되고 개발된다는 점은 이해하면 좋겠다. CUDA는 매우 강력하게 병렬 처리를 도와주지만, 하드웨어와 구조에 대한 이해, 그리고 올바른 알고리즘의 도입 없이는 그 강력한 성능을 제대로 활용하지 못하거나 오히려 CPU보다 안 좋은 결과를 낼 수 있음을 기억하자.


참고자료
1. Ingo Wald, Realtime Ray Tracing and Interactive Global Illumination (PhD thesis), Saarland University, 2004
2. Daniel Reiter Horn et al., Interactive k-D Tree GPU Raytracing, Proceedings of the 2007 symposium on Interactive 3D graphics and games, 2007
3. Tim Foley and Jeremy Sugerman, KD-Tree Acceleration Structures for a GPU Raytracer, Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, 2005
4. Michael Hapala et al., Efficient Stack-less BVH Traversal for Ray Tracing, Proceedings 27th Spring Conference of Computer Graphics (SCCG) 2011, 2011
5. Philip Dutre et al., Advanced Global Illumination, 2/E, ISBN-13: 978-1568813073, 2006
6. Daniel Reiter Horn et al., Kd-Tree Acceleration Structures for a GPU Raytracer, http://graphics.stanford.edu/papers/i3dkdtree/i3dkdtreeonline.ppt

엘레파츠 -    PGM06-0810 

http://www.eleparts.co.kr/EPX33N9G

 

'[old 정리중] Project(공개) > 기구재료' 카테고리의 다른 글

발사나무의 특징  (0) 2013.04.30
수상RC 관련 용품  (0) 2012.11.27
소형 기어 판매처 참고  (0) 2012.10.13
다양한 크기의 프롭 판매처  (0) 2012.10.05
각종 본드  (0) 2012.08.27

엘레파츠 -   MDL-BDC24  (TEXAS INSTRUMENTS 제품)

http://www.eleparts.co.kr/EPX6LY7A

 

 

 

개성제어

http://www.kscontrol.com/product.php?pr_kind=m

 

 

(주) 티엠테크아이

http://www.tmmotor.co.kr/page/page.php?pid=199923

 

본 글은 working model 2d ver.9.0.3 806 을 기준으로 작성되었다.

working model은 matlab과 연동을 위해 DDE(Dynamic Data Exchange)를 사용한다.

하지만, Matlab v2006 이후에 COM(Component Object Modeling) 으로 바뀌면서 이를 해결하기 위한 방법을 아래와 같이 제시한다.

해당 내용은 프로그램 설치 후 파일로 첨부된 메뉴얼 중

MatLabProxy.pdf 파일과 WMTutorialGuide.pdf 두 파일을 참고 하였다.

 

예제로 Tutorials 중 Exercise7_Matlab 를 수행 해보고 그 과정을 기록한다...

 

먼저 아래 주의 사항을 반드시 check 한다. 

 1. 해당 예제 실행시, 제공된 M-file 의 이름과 확장자가 대문자로 되어 있는데 상위버전의 matlab은 파일이름과 확장자 모두 대소문자를 구분하므로 파일 이름을 function name과 일치시키고 확장자(.m)은 반드시 소문자를 사용한다.

 

 2. matlab 실행파일과 working model 의 파일중 아래 글에서 설명될 MATLABProxy.exe , WM.exe 파일을 속성에서 관리자 권한으로 실행에 체크해둔다. (windows7 이상의 OS 사용시..)

 

 3. matlab 에서 setpath 로 들어가 시뮬레이션시 사용할 m-file의 경로를 추가해준다.

 

 4. 해당 m-file 이 잘 동작 하는지 확인하려면 (tutorial : Exercise7_Matlab 의 경우)

global e1
e1 = 1
krctrl2(1,1)

의 결과가 'ans = 10.8080' 이 되는지 확인한다.

 

 5. matlab에서 모든 변수를 clear 하고 시뮬레이션 실행 전에 아래와 같이 초기화 한다.  (tutorial : Exercise7_Matlab 의 경우)

global e1
e1 = 1

 

Working Model 2D와 Matlab의 Link 수행

 1. working model과 matlab 을 모두 종료한 상태에서

 

 2. matlab을 실행한다.

 

 3. matlab command 창에서

enableservice('AutomationServer', true)

를 enter 한다.

 

 4. working model 이 설치된 폴더에서

\Working Model 2D\Program\

MATLABProxy.exe 파일을 실행하면 아래와 같은 창이 뜨는데

 

절대 종료 시키지말고 최소화 해둔다.

(만약에 이 단계에서 에러가 생기면 아래의 '오류 발생시' 글을 참고 한다.)

 

 5. working model 을 실행하고 파일을 연다. 그리고 아래와 같이 외부 파일 연결 아이콘에서 속성으로 들어가

 application 에 MATLABProxy  라고 넣고,

Dovument 에 Engine 이라 넣는다.

 6. working model 에서 시뮬레이션을 실행한다.

 

위(Working Model 2D와 Matlab의 Link 수행) 4 단계에서 오류 발생시 

 1. matlab 종료

 

 2. command prompt (DOS window) 에서 matlab 실행 파일이 있는 폴더로 가서 아래와 같이 실행한다.

Matlab /regserver

 

 3. matlab command window 가 뜨는데, 해당 창은 종료하고 위의 step2 부터 다시 시작한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

강도가 높고

가벼움

주로, 모형 비행기 등에 많이 쓰이고 있음.

 

'[old 정리중] Project(공개) > 기구재료' 카테고리의 다른 글

소형 모터  (0) 2013.06.26
수상RC 관련 용품  (0) 2012.11.27
소형 기어 판매처 참고  (0) 2012.10.13
다양한 크기의 프롭 판매처  (0) 2012.10.05
각종 본드  (0) 2012.08.27

출처 : http://cafe.naver.com/gabriel98/1152

Snow

255 250 250

#FFFAFA

GhostWhite

248 248 255

#F8F8FF

WhiteSmoke

245 245 245

#F5F5F5

Gainsboro

220 220 220

#DCDCDC

FloralWhite

255 250 240

#FFFAF0

OldLace

253 245 230

#FDF5E6

Linen

250 240 230

#FAF0E6

AntiqueWhite

250 235 215

#FAEBD7

PapayaWhip

255 239 213

#FFEFD5

BlanchedAlmond

255 235 205

#FFEBCD

Bisque

255 228 196

#FFE4C4

PeachPuff

255 218 185

#FFDAB9

NavajoWhite

255 222 173

#FFDEAD

Moccasin

255 228 181

#FFE4B5

Cornsilk

255 248 220

#FFF8DC

Ivory

255 255 240

#FFFFF0

LemonChiffon

255 250 205

#FFFACD

Seashell

255 245 238

#FFF5EE

Honeydew

240 255 240

#F0FFF0

MintCream

245 255 250

#F5FFFA

Azure

240 255 255

#F0FFFF

AliceBlue

240 248 255

#F0F8FF

lavender

230 230 250

#E6E6FA

LavenderBlush

255 240 245

#FFF0F5

MistyRose

255 228 225

#FFE4E1

White

255 255 255

#FFFFFF

Black

0 0 0

#000000

DarkSlateGray

47 79 79

#2F4F4F

DimGrey

105 105 105

#696969

SlateGrey

112 128 144

#708090

LightSlateGray

119 136 153

#778899

Grey

190 190 190

#BEBEBE

LightGray

211 211 211

#D3D3D3

MidnightBlue

25 25 112

#191970

NavyBlue

0 0 128

#000080

CornflowerBlue

100 149 237

#6495ED

DarkSlateBlue

72 61 139

#483D8B

SlateBlue

106 90 205

#6A5ACD

MediumSlateBlue

123 104 238

#7B68EE

LightSlateBlue

132 112 255

#8470FF

MediumBlue

0 0 205

#0000CD

RoyalBlue

65 105 225

#4169E1

Blue

0 0 255

#0000FF

DodgerBlue

30 144 255

#1E90FF

DeepSkyBlue

0 191 255

#00BFFF

SkyBlue

135 206 235

#87CEEB

LightSkyBlue

135 206 250

#87CEFA

SteelBlue

70 130 180

#4682B4

LightSteelBlue

176 196 222

#B0C4DE

LightBlue

173 216 230

#ADD8E6

PowderBlue

176 224 230

#B0E0E6

PaleTurquoise

175 238 238

#AFEEEE

DarkTurquoise

0 206 209

#00CED1

MediumTurquoise

72 209 204

#48D1CC

Turquoise

64 224 208

#40E0D0

Cyan

0 255 255

#00FFFF

LightCyan

224 255 255

#E0FFFF

CadetBlue

95 158 160

#5F9EA0

MediumAquamarine

102 205 170

#66CDAA

Aquamarine

127 255 212

#7FFFD4

DarkGreen

0 100 0

#006400

DarkOliveGreen

85 107 47

#556B2F

DarkSeaGreen

143 188 143

#8FBC8F

SeaGreen

46 139 87

#2E8B57

MediumSeaGreen

60 179 113

#3CB371

LightSeaGreen

32 178 170

#20B2AA

PaleGreen

152 251 152

#98FB98

SpringGreen

0 255 127

#00FF7F

LawnGreen

124 252 0

#7CFC00

Green

0 255 0

#00FF00

Chartreuse

127 255 0

#7FFF00

MedSpringGreen

0 250 154

#00FA9A

GreenYellow

173 255 47

#ADFF2F

LimeGreen

50 205 50

#32CD32

YellowGreen

154 205 50

#9ACD32

ForestGreen

34 139 34

#228B22

OliveDrab

107 142 35

#6B8E23

DarkKhaki

189 183 107

#BDB76B

PaleGoldenrod

238 232 170

#EEE8AA

LtGoldenrodYello

250 250 210

#FAFAD2

LightYellow

255 255 224

#FFFFE0

Yellow

255 255 0

#FFFF00

Gold

255 215 0

#FFD700

LightGoldenrod

238 221 130

#EEDD82

goldenrod

218 165 32

#DAA520

DarkGoldenrod

184 134 11

#B8860B

RosyBrown

188 143 143

#BC8F8F

IndianRed

205 92 92

#CD5C5C

SaddleBrown

139 69 19

#8B4513

Sienna

160 82 45

#A0522D

Peru

205 133 63

#CD853F

Burlywood

222 184 135

#DEB887

Beige

245 245 220

#F5F5DC

Wheat

245 222 179

#F5DEB3

SandyBrown

244 164 96

#F4A460

Tan

210 180 140

#D2B48C

Chocolate

210 105 30

#D2691E

Firebrick

178 34 34

#B22222

Brown

165 42 42

#A52A2A

DarkSalmon

233 150 122

#E9967A

Salmon

250 128 114

#FA8072

LightSalmon

255 160 122

#FFA07A

Orange

255 165 0

#FFA500

DarkOrange

255 140 0

#FF8C00

Coral

255 127 80

#FF7F50

LightCoral

240 128 128

#F08080

Tomato

255 99 71

#FF6347

OrangeRed

255 69 0

#FF4500

Red

255 0 0

#FF0000

HotPink

255 105 180

#FF69B4

DeepPink

255 20 147

#FF1493

Pink

255 192 203

#FFC0CB

LightPink

255 182 193

#FFB6C1

PaleVioletRed

219 112 147

#DB7093

Maroon

176 48 96

#B03060

MediumVioletRed

199 21 133

#C71585

VioletRed

208 32 144

#D02090

Magenta

255 0 255

#FF00FF

Violet

238 130 238

#EE82EE

Plum

221 160 221

#DDA0DD

Orchid

218 112 214

#DA70D6

MediumOrchid

186 85 211

#BA55D3

DarkOrchid

153 50 204

#9932CC

DarkViolet

148 0 211

#9400D3

BlueViolet

138 43 226

#8A2BE2

Purple

160 32 240

#A020F0

MediumPurple

147 112 219

#9370DB

Thistle

216 191 216

#D8BFD8

Snow1

255 250 250

#FFFAFA

Snow2

238 233 233

#EEE9E9

Snow3

205 201 201

#CDC9C9

Snow4

139 137 137

#8B8989

Seashell1

255 245 238

#FFF5EE

Seashell2

238 229 222

#EEE5DE

Seashell3

205 197 191

#CDC5BF

Seashell4

139 134 130

#8B8682

AntiqueWhite1

255 239 219

#FFEFDB

AntiqueWhite2

238 223 204

#EEDFCC

AntiqueWhite3

205 192 176

#CDC0B0

AntiqueWhite4

139 131 120

#8B8378

Bisque1

255 228 196

#FFE4C4

Bisque2

238 213 183

#EED5B7

Bisque3

205 183 158

#CDB79E

Bisque4

139 125 107

#8B7D6B

PeachPuff1

255 218 185

#FFDAB9

PeachPuff2

238 203 173

#EECBAD

PeachPuff3

205 175 149

#CDAF95

PeachPuff4

139 119 101

#8B7765

NavajoWhite1

255 222 173

#FFDEAD

NavajoWhite2

238 207 161

#EECFA1

NavajoWhite3

205 179 139

#CDB38B

NavajoWhite4

139 121 94

#8B795E

LemonChiffon1

255 250 205

#FFFACD

LemonChiffon2

238 233 191

#EEE9BF

LemonChiffon3

205 201 165

#CDC9A5

LemonChiffon4

139 137 112

#8B8970

Cornsilk1

255 248 220

#FFF8DC

Cornsilk2

238 232 205

#EEE8CD

Cornsilk3

205 200 177

#CDC8B1

Cornsilk4

139 136 120

#8B8878

Ivory1

255 255 240

#FFFFF0

Ivory2

238 238 224

#EEEEE0

Ivory3

205 205 193

#CDCDC1

Ivory4

139 139 131

#8B8B83

Honeydew1

240 255 240

#F0FFF0

Honeydew2

224 238 224

#E0EEE0

Honeydew3

193 205 193

#C1CDC1

Honeydew4

131 139 131

#838B83

LavenderBlush1

255 240 245

#FFF0F5

LavenderBlush2

238 224 229

#EEE0E5

LavenderBlush3

205 193 197

#CDC1C5

LavenderBlush4

139 131 134

#8B8386

MistyRose1

255 228 225

#FFE4E1

MistyRose2

238 213 210

#EED5D2

MistyRose3

205 183 181

#CDB7B5

MistyRose4

139 125 123

#8B7D7B

Azure1

240 255 255

#F0FFFF

Azure2

224 238 238

#E0EEEE

Azure3

193 205 205

#C1CDCD

Azure4

131 139 139

#838B8B

SlateBlue1

131 111 255

#836FFF

SlateBlue2

122 103 238

#7A67EE

SlateBlue3

105 89 205

#6959CD

SlateBlue4

71 60 139

#473C8B

RoyalBlue1

72 118 255

#4876FF

RoyalBlue2

67 110 238

#436EEE

RoyalBlue3

58 95 205

#3A5FCD

RoyalBlue4

39 64 139

#27408B

Blue1

0 0 255

#0000FF

Blue2

0 0 238

#0000EE

Blue3

0 0 205

#0000CD

Blue4

0 0 139

#00008B

DodgerBlue1

30 144 255

#1E90FF

DodgerBlue2

28 134 238

#1C86EE

DodgerBlue3

24 116 205

#1874CD

DodgerBlue4

16 78 139

#104E8B

SteelBlue1

99 184 255

#63B8FF

SteelBlue2

92 172 238

#5CACEE

SteelBlue3

79 148 205

#4F94CD

SteelBlue4

54 100 139

#36648B

DeepSkyBlue1

0 191 255

#00BFFF

DeepSkyBlue2

0 178 238

#00B2EE

DeepSkyBlue3

0 154 205

#009ACD

DeepSkyBlue4

0 104 139

#00688B

SkyBlue1

135 206 255

#87CEFF

SkyBlue2

126 192 238

#7EC0EE

SkyBlue3

108 166 205

#6CA6CD

SkyBlue4

74 112 139

#4A708B

LightSkyBlue1

176 226 255

#B0E2FF

LightSkyBlue2

164 211 238

#A4D3EE

LightSkyBlue3

141 182 205

#8DB6CD

LightSkyBlue4

96 123 139

#607B8B

SlateGray1

198 226 255

#C6E2FF

SlateGray2

185 211 238

#B9D3EE

SlateGray3

159 182 205

#9FB6CD

SlateGray4

108 123 139

#6C7B8B

LightSteelBlue1

202 225 255

#CAE1FF

LightSteelBlue2

188 210 238

#BCD2EE

LightSteelBlue3

162 181 205

#A2B5CD

LightSteelBlue4

110 123 139

#6E7B8B

LightBlue1

191 239 255

#BFEFFF

LightBlue2

178 223 238

#B2DFEE

LightBlue3

154 192 205

#9AC0CD

LightBlue4

104 131 139

#68838B

LightCyan1

224 255 255

#E0FFFF

LightCyan2

209 238 238

#D1EEEE

LightCyan3

180 205 205

#B4CDCD

LightCyan4

122 139 139

#7A8B8B

PaleTurquoise1

187 255 255

#BBFFFF

PaleTurquoise2

174 238 238

#AEEEEE

PaleTurquoise3

150 205 205

#96CDCD

PaleTurquoise4

102 139 139

#668B8B

CadetBlue1

152 245 255

#98F5FF

CadetBlue2

142 229 238

#8EE5EE

CadetBlue3

122 197 205

#7AC5CD

CadetBlue4

83 134 139

#53868B

Turquoise1

0 245 255

#00F5FF

Turquoise2

0 229 238

#00E5EE

Turquoise3

0 197 205

#00C5CD

Turquoise4

0 134 139

#00868B

Cyan1

0 255 255

#00FFFF

Cyan2

0 238 238

#00EEEE

Cyan3

0 205 205

#00CDCD

Cyan4

0 139 139

#008B8B

DarkSlateGray1

151 255 255

#97FFFF

DarkSlateGray2

141 238 238

#8DEEEE

DarkSlateGray3

121 205 205

#79CDCD

DarkSlateGray4

82 139 139

#528B8B

Aquamarine1

127 255 212

#7FFFD4

Aquamarine2

118 238 198

#76EEC6

Aquamarine3

102 205 170

#66CDAA

Aquamarine4

69 139 116

#458B74

DarkSeaGreen1

193 255 193

#C1FFC1

DarkSeaGreen2

180 238 180

#B4EEB4

DarkSeaGreen3

155 205 155

#9BCD9B

DarkSeaGreen4

105 139 105

#698B69

SeaGreen1

84 255 159

#54FF9F

SeaGreen2

78 238 148

#4EEE94

SeaGreen3

67 205 128

#43CD80

SeaGreen4

46 139 87

#2E8B57

PaleGreen1

154 255 154

#9AFF9A

PaleGreen2

144 238 144

#90EE90

PaleGreen3

124 205 124

#7CCD7C

PaleGreen4

84 139 84

#548B54

SpringGreen1

0 255 127

#00FF7F

SpringGreen2

0 238 118

#00EE76

SpringGreen3

0 205 102

#00CD66

SpringGreen4

0 139 69

#008B45

Green1

0 255 0

#00FF00

Green2

0 238 0

#00EE00

Green3

0 205 0

#00CD00

Green4

0 139 0

#008B00

Chartreuse1

127 255 0

#7FFF00

Chartreuse2

118 238 0

#76EE00

Chartreuse3

102 205 0

#66CD00

Chartreuse4

69 139 0

#458B00

OliveDrab1

192 255 62

#C0FF3E

OliveDrab2

179 238 58

#B3EE3A

OliveDrab3

154 205 50

#9ACD32

OliveDrab4

105 139 34

#698B22

DarkOliveGreen1

202 255 112

#CAFF70

DarkOliveGreen2

188 238 104

#BCEE68

DarkOliveGreen3

162 205 90

#A2CD5A

DarkOliveGreen4

110 139 61

#6E8B3D

Khaki1

255 246 143

#FFF68F

Khaki2

238 230 133

#EEE685

Khaki3

205 198 115

#CDC673

Khaki4

139 134 78

#8B864E

LightGoldenrod1

255 236 139

#FFEC8B

LightGoldenrod2

238 220 130

#EEDC82

LightGoldenrod3

205 190 112

#CDBE70

LightGoldenrod4

139 129 76

#8B814C

LightYellow1

255 255 224

#FFFFE0

LightYellow2

238 238 209

#EEEED1

LightYellow3

205 205 180

#CDCDB4

LightYellow4

139 139 122

#8B8B7A

Yellow1

255 255 0

#FFFF00

Yellow2

238 238 0

#EEEE00

Yellow3

205 205 0

#CDCD00

Yellow4

139 139 0

#8B8B00

Gold1

255 215 0

#FFD700

Gold2

238 201 0

#EEC900

Gold3

205 173 0

#CDAD00

Gold4

139 117 0

#8B7500

Goldenrod1

255 193 37

#FFC125

Goldenrod2

238 180 34

#EEB422

Goldenrod3

205 155 29

#CD9B1D

Goldenrod4

139 105 20

#8B6914

DarkGoldenrod1

255 185 15

#FFB90F

DarkGoldenrod2

238 173 14

#EEAD0E

DarkGoldenrod3

205 149 12

#CD950C

DarkGoldenrod4

139 101 8

#8B658B

RosyBrown1

255 193 193

#FFC1C1

RosyBrown2

238 180 180

#EEB4B4

RosyBrown3

205 155 155

#CD9B9B

RosyBrown4

139 105 105

#8B6969

IndianRed1

255 106 106

#FF6A6A

IndianRed2

238 99 99

#EE6363

IndianRed3

205 85 85

#CD5555

IndianRed4

139 58 58

#8B3A3A

Sienna1

255 130 71

#FF8247

Sienna2

238 121 66

#EE7942

Sienna3

205 104 57

#CD6839

Sienna4

139 71 38

#8B4726

Burlywood1

255 211 155

#FFD39B

Burlywood2

238 197 145

#EEC591

Burlywood3

205 170 125

#CDAA7D

Burlywood4

139 115 85

#8B7355

Wheat1

255 231 186

#FFE7BA

Wheat2

238 216 174

#EED8AE

Wheat3

205 186 150

#CDBA96

Wheat4

139 126 102

#8B7E66

Tan1

255 165 79

#FFA54F

Tan2

238 154 73

#EE9A49

Tan3

205 133 63

#CD853F

Tan4

139 90 43

#8B5A2B

Chocolate1

255 127 36

#FF7F24

Chocolate2

238 118 33

#EE7621

Chocolate3

205 102 29

#CD661D

Chocolate4

139 69 19

#8B4513

Firebrick1

255 48 48

#FF3030

Firebrick2

238 44 44

#EE2C2C

Firebrick3

205 38 38

#CD2626

Firebrick4

139 26 26

#8B1A1A

Brown1

255 64 64

#FF4040

Brown2

238 59 59

#EE3B3B

Brown3

205 51 51

#CD3333

Brown4

139 35 35

#8B2323

Salmon1

255 140 105

#FF8C69

Salmon2

238 130 98

#EE8262

Salmon3

205 112 84

#CD7054

Salmon4

139 76 57

#8B4C39

LightSalmon1

255 160 122

#FFA07A

LightSalmon2

238 149 114

#EE9572

LightSalmon3

205 129 98

#CD8162

LightSalmon4

139 87 66

#8B5742

Orange1

255 165 0

#FFA500

Orange2

238 154 0

#EE9A00

Orange3

205 133 0

#CD8500

Orange4

139 90 0

#8B5A00

DarkOrange1

255 127 0

#FF7F00

DarkOrange2

238 118 0

#EE7600

DarkOrange3

205 102 0

#CD6600

DarkOrange4

139 69 0

#8B4500

Coral1

255 114 86

#FF7256

Coral2

238 106 80

#EE6A50

Coral3

205 91 69

#CD5B45

Coral4

139 62 47

#8B3E2F

Tomato1

255 99 71

#FF6347

Tomato2

238 92 66

#EE5C42

Tomato3

205 79 57

#CD4F39

Tomato4

139 54 38

#8B3626

OrangeRed1

255 69 0

#FF4500

OrangeRed2

238 64 0

#EE4000

OrangeRed3

205 55 0

#CD3700

OrangeRed4

139 37 0

#8B2500

Red1

255 0 0

#FF0000

Red2

238 0 0

#EE0000

Red3

205 0 0

#CD0000

Red4

139 0 0

#8B0000

DeepPink1

255 20 147

#FF1493

DeepPink2

238 18 137

#EE1289

DeepPink3

205 16 118

#CD1076

DeepPink4

139 10 80

#8B0A50

HotPink1

255 110 180

#FF6EB4

HotPink2

238 106 167

#EE6AA7

HotPink3

205 96 144

#CD6090

HotPink4

139 58 98

#8B3A62

Pink1

255 181 197

#FFB5C5

Pink2

238 169 184

#EEA9B8

Pink3

205 145 158

#CD919E

Pink4

139 99 108

#8B636C

LightPink1

255 174 185

#FFAEB9

LightPink2

238 162 173

#EEA2AD

LightPink3

205 140 149

#CD8C95

LightPink4

139 95 101

#8B5F65

PaleVioletRed1

255 130 171

#FF82AB

PaleVioletRed2

238 121 159

#EE799F

PaleVioletRed3

205 104 137

#CD6889

PaleVioletRed4

139 71 93

#8B475D

Maroon1

255 52 179

#FF34B3

Maroon2

238 48 167

#EE30A7

Maroon3

205 41 144

#CD2990

Maroon4

139 28 98

#8B1C62

VioletRed1

255 62 150

#FF3E96

VioletRed2

238 58 140

#EE3A8C

VioletRed3

205 50 120

#CD3278

VioletRed4

139 34 82

#8B2252

Magenta1

255 0 255

#FF00FF

Magenta2

238 0 238

#EE00EE

Magenta3

205 0 205

#CD00CD

Magenta4

139 0 139

#8B008B

Orchid1

255 131 250

#FF83FA

Orchid2

238 122 233

#EE7AE9

Orchid3

205 105 201

#CD69C9

Orchid4

139 71 137

#8B4789

Plum1

255 187 255

#FFBBFF

Plum2

238 174 238

#EEAEEE

Plum3

205 150 205

#CD96CD

Plum4

139 102 139

#8B668B

MediumOrchid1

224 102 255

#E066FF

MediumOrchid2

209 95 238

#D15FEE

MediumOrchid3

180 82 205

#B452CD

MediumOrchid4

122 55 139

#7A378B

DarkOrchid1

191 62 255

#BF3EFF

DarkOrchid2

178 58 238

#B23AEE

DarkOrchid3

154 50 205

#9A32CD

DarkOrchid4

104 34 139

#68228B

Purple1

155 48 255

#9B30FF

Purple2

145 44 238

#912CEE

Purple3

125 38 205

#7D26CD

Purple4

85 26 139

#551A8B

MediumPurple1

171 130 255

#AB82FF

MediumPurple2

159 121 238

#9F79EE

MediumPurple3

137 104 205

#8968CD

MediumPurple4

93 71 139

#5D478B

Thistle1

255 225 255

#FFE1FF

Thistle2

238 210 238

#EED2EE

Thistle3

205 181 205

#CDB5CD

Thistle4

139 123 139

#8B7B8B

grey11

28 28 28

#1C1C1C

grey21

54 54 54

#363636

grey31

79 79 79

#4F4F4F

grey41

105 105 105

#696969

grey51

130 130 130

#828282

grey61

156 156 156

#9C9C9C

grey71

181 181 181

#B5B5B5

gray81

207 207 207

#CFCFCF

gray91

232 232 232

#E8E8E8

DarkGrey

169 169 169

#A9A9A9

DarkBlue

0 0 139

#00008B

DarkCyan

0 139 139

#008B8B

DarkMagenta

139 0 139

#8B008B

DarkRed

139 0 0

#8B0000

LightGreen

144 238 144

#90EE90

+ Recent posts