Loading...
2016. 10. 12. 18:11

Blur 1

이전에도 blur를 한번 정리한적이 있긴 한데 다시 보다보니 이전에 적어둔 글에서잘못된 부분이 있어서 처음부터 다시 r&d 하면서 정리를 하게 되었다. 블러링 방식은 크게 box blur와 gaussian blur 이 두가지로 나뉜다.box blur는 16box, 64box, 9cone 방식이 있고gaussian은 전통적인 gaussian 방식과 최적화시킨 SGX방식이 있다. 많이 쓰이는 9cone과 gaussian, 그리고 sgx만 간단하게 살펴보자 9cone blur9cone의 기본 개념은 현재점을 중심으로 상,하,좌,우,상좌,상우,하좌,하우 이렇게 기준점 + offset points(8) 값을 합치는 것이다. 원본 이미지 1/4 downsampling 한 이미지 1/4 downsampling + 9..

int와 float 연산

int a = 6600;int result = (int)((float)a * 0.01f);이렇게 하면 result 값은 66이 되어야 하지만 65가 된다. 정상적으로 하기 위해서는 이렇게 해야 한다.nt a = 6600;(int)Mathf.Round(a * 0.01f ); 혹시나 해서 추가 개별 연산 테스트를 해 봤다.int a = 6600;int result = (int)((float)a * 0.01f);// result 결과 65 float bb = (float)a * 0.01f;// bb 결과 66int cc = (int)66f;// cc 결과 66int dd = (int)bb;// cc 결과 66 그래서 시작한 디스어셈블리C++int a = 6600;00CA436E mov dword ptr [a]..

2016. 8. 14. 10:18

UV Texture Coordinates and Texture Mapping - OpenGL / DirectX

원문 : http://thedev-log.blogspot.kr/2012/07/texture-coordinates-tutorial-opengl-and.html이 글은 필요에 의해 모자란 번역실력으로 번역한 글입니다. 이해를 돕기 위해 원문을 보시길 추천드립니다. 나는 지금 학생이 아니라서, WebGL을 좀 심도있게 살펴보고 새로운 3D와 그래픽 개념을 배우기 위해 노력하고 있다.범프매핑, 그림자 매핑 같은 것들을 배우기 전에 텍스처 매핑에 대해 기반을다지기 위해 간단한 튜토리얼을 적기로 했다. 나의 생각으로는 새로운 것을 배울 때 좋은 방법은 관련된 위키피디아 페이지들을 검색하는 것이다.그러므로 여기 글을 읽기 전이든, 일고 나서든 위키피디아 페이지를한번 열어서 읽어보길 권장한다.텍스처 매핑이 처음 사용된..

normal map compression

보통 게임에서는 메모리 용량 때문에 텍스쳐를 압축해서 많이 사용하는데pc에서는 특히 dds 파일을 많이 사용한다.dds 파일 포멧을 많이 쓰는 이유는 "DXT 압축" 링크를 참조하면 된다. 그런데 문제는 DXT 압축 알고리즘이 노멀맵을 염두에 두고 설계한 것이 아니기 때문에 노멀맵에DXT 압축을 사용하는것은 퀄리티에 심각한 결점을 부과해 준다는 것이다. 그래서 노멀맵은 어떻게 해야할까?그렇다면 어떻게 해야 할까? dxt의 그 가성비를 포기해야 하는가?다른 맵과는 다른 노멀맵의 특성을 이용하면 약간의 편법을 이용할 수 있다.우선 노멀맵은 다른 텍스쳐들(diffuse, specular, emissive etc..)처럼 색의 정보를 저장하는게 아니라기울기 정보, 즉 방향정보를 저장하고 있다.이 기울기 정보를 ..

Semantics

SemanticsA semantic is a string attached to a shader input or output that conveys information about the intended use of a parameter. Semantics are required on all variables passed between shader stages. The syntax for adding a semantic to a shader variable is shown here (Variable Syntax (DirectX HLSL)). semantic은 파라미터의 용도에 대한 정보를 전달하기 위해 shader의 입력이나 출력에 붙여지는 문자열이다.shader stage들에서 오고가는 모든 변수들은 s..

정점 셰이더, 픽셀셰이더, HLSL 사용법

정점 셰이더 : 폴리곤의 형태를 바꾼다.정점 셰이더에 관한 변수인 LPDIRECT3DVERTEXSHADER9과모델의 정점 데이터 선언에 관한 변수인 LPDIRECT3DVERTEXDECLARATION9이 필요하다. 사용 예// 정점선언 오브젝트 생성 D3DVERTEXELEMENT9 decl[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, D3DDECL_END() }; // 정점 선언if( FAILED( hr = m_pd3dDevice->CreateVertexDeclaration( decl, &m_pVertexDeclaration ) ) ) { return hr; } // 셰이더 읽기 if( FAILED(..

특정 벡터에 수직인 임의의 벡터

벡터A에 수직인 B를 구하는 방법은?수직이란 말은 내적값이 0 이라는 것을 이용한다.A Dot B = 0 1. A(x,y,z) 일 때 B(-y, x, 0) 인 경우를 생각해 보자.A dot B = -xy + xy + 0 = 0두 벡터는 수직이다.하지만 만약 A가 A(0, 0, 1)이었다면 어떠한가?A(0, 0, 1) , B(0, 0, 0) 이 되어 B 벡터가 0벡터가 되버린다. 2. A(x,y,z) 일 때 B(0, -z, y) 인 경우를 생각해 보자.A dot B = 0 -yz + yz = 0두 벡터는 수직이다.하지만 만약 A가 A(1, 0, 0)이었다면 어떠한가?A(1, 0, 0) , B(0, 0, 0) 이 되어 B 벡터가 0벡터가 되버린다. 3. 위 두 방식을 합쳐보면 어떨까? A(x,y,z) 일 때..

d3dx9d.dll 못 찾을 경울.

오래된 책 예제를 좀 돌려보려하니 d3dx9d.dll 못찾는다고 징징 거린다.dx sdk 깔려있는디 말여... 그래서 찾아봤더니 예전 네이버 블로그에 써 두었던 글을 발견했다.그런데 당시(2007)와 dx버전이 틀린지 DirectX.cab파일을 현재 버전 (june, 2010)에서 찾아보니 보이질 않는다.그래서 혹시나 오래된 예제를 돌릴 때를 대비해서 이곳에 d3dx9d.dll 파일을 올려둔다.