블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (105)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (217)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,756
Today5
Yesterday73

'sampling'에 해당되는 글 2건

  1. 2016.10.12 Blur 1
  2. 2012.05.03 Anti Aliasing

Blur 1

Study/Graphics / 2016.10.12 18:11

이전에도 blur를 한번 정리한적이 있긴 한데 다시 보다보니 이전에 적어둔 글에서

잘못된 부분이 있어서 처음부터 다시 r&d 하면서 정리를 하게 되었다.


블러링 방식은 크게 box blurgaussian blur 이 두가지로 나뉜다.

box blur는 16box, 64box, 9cone 방식이 있고

gaussian은 전통적인 gaussian 방식과 최적화시킨 SGX방식이 있다.


많이 쓰이는 9cone과 gaussian, 그리고 sgx만 간단하게 살펴보자


9cone blur

9cone의 기본 개념은 현재점을 중심으로 상,하,좌,우,상좌,상우,하좌,하우 

이렇게 기준점 + offset points(8) 값을 합치는 것이다.


원본 이미지


1/4 downsampling 한 이미지


1/4 downsampling + 9cone blur 한 이미지



위 사진들을 보면 그냥 다운샘플링한 이미지는 산쪽에 이미지 톱니현상이 눈에 많이 띄지만 

블러를 한 결과물은 조금 더 부드러워 지는것을 알 수 있다.


구현방법

float off = 1.0f;

Graphics.BlitMultiTap(src, dest, material_, new Vector2(-off, -off), new Vector2(-off, off),

new Vector2(off, off), new Vector2(off, -off));

그냥 알기쉽게 (-1,-1), (-1,1), (1,1), (1,-1) 이렇게 네개의 지점(파란색을 기준으로 한다.


셰이더 코드에서는 이 각 점에 대해 위 그림과 같이 다시 네 지점(빨간색)의 값을 참조하여 섞어준다.

shader-vertex code

o.taps[0] = v.texcoord.xy - (_MainTex_TexelSize.xy * _BlurOffsets.xy) + _MainTex_TexelSize.xy * _BlurOffsets.xy;

o.taps[1] = v.texcoord.xy - (_MainTex_TexelSize.xy * _BlurOffsets.xy) - _MainTex_TexelSize.xy * _BlurOffsets.xy;

o.taps[2] = v.texcoord.xy - (_MainTex_TexelSize.xy * _BlurOffsets.xy) + _MainTex_TexelSize.xy * _BlurOffsets.xy * half2(1,-1);

o.taps[3] = v.texcoord.xy - (_MainTex_TexelSize.xy * _BlurOffsets.xy) - _MainTex_TexelSize.xy * _BlurOffsets.xy * half2(1,-1);


shader-fragment code

fixed4 frag(v2f i) : SV_Target 

{

half4 color = tex2D(_MainTex, i.taps[0]);

color += tex2D(_MainTex, i.taps[1]);

color += tex2D(_MainTex, i.taps[2]);

color += tex2D(_MainTex, i.taps[3]);

return color * 0.25;

}


이러한 과정을 각 파란점마다 하면 아래와 같은 결과가 된다.

빨간점 옆의 숫자는 빨간점이 몇번이나 중복되는지를 나타내는 값이다.


그 이후에는 이 downsampling + 9cone  blur 된 이미지를 가지고

9cone blur를 얼마나 더 반복해줄 건지만 정하면 된다.

한 예로 아래 이미지는 결과 텍스처를 5번 반복해서 9 cone sampling 해 주었는데.

0.5, 1, 1.5, 2, 2.5 이렇게 0.5씩 늘려가며 픽셀값을 가져왔다.





downsampling

이 작업은 최적화를 위해 많이 사용하는 기술이다.

내용자체는 간단한데 무거운 postprocess 기술의 경우 렌더링 시간이 많이 걸리므로

렌더텍스처의 사이즈를 줄여서 연산량을 줄이자는 내용이다.

만약 가로세로 크기를 반으로만 줄여도 계산량은 1/4로 줄어든다.

downsampling(다운샘플링)을 할 경우 두가지 선택사항이 있다.


첫번째는 그냥 다운샘플링만 해서 후에 blur를 으쌰으쌰 하는 것.


사진 출처 : nvidia

simple downsampling은 단순히 하드웨어의 bilinear filtering을 사용한다.

이 그림에서 f 픽셀이 1,2,3,4 텍셀값을 평균한 값임을 알 수 있다.




두번째는 다운샘플링시 엘리어싱 현상을 줄이기 위해 filtering를 해주는 것.

사진 출처 : nvidia

두번째 기술은 다운샘플링시 fetching으로 추가로 sample(b,c,d,e)들을 필터로 더하는 방식이다.

최종 색상값은 다섯개의 sample들의 평균을 normalized한 색상이다.



단순히 simple downsampling와 filter downsampling만 비교하였는데 실제로

아래 nvidia 문서에 있는 more filter downsampling 까지 하여 비교스샷을 보면

결과물이 상당히 다르다.

엘리어싱이 없이 최대한 부드럽게 흐려지는 이미지를 구하기 위해 

가장 좋은 방법은 downsampling 없이 소실되는 픽셀없이 모두 사용하여 

평균시키는 방법이겠지만 여기에 최적화라는 단어를 붙인다면

고민해야할 부분이 잔뜩있고, 선택해야할 문제 또한 잔뜩있다.


가우스와 sgx는 다음 글에서....


잘못된 부분은 댓글로 적어주시면 감사하겠습니다 ^^a..


Reference Link

- BlitMultiTap

- mgun blur

- 16 box blur

- 64 box blur

- 9cone blur (잘못된 부분 수정 예정.)

- gaussian blur 

- sgx blur

- 선형 보간법(linear, bilinear, trilinear interpolation)

- unity doc - RnderTExture.GetTemporary

- Nvidia - Hight Quality Antialiasing

FroggyAA.pdf


-

'Study > Graphics' 카테고리의 다른 글

rgbm  (0) 2016.12.29
Efficient Gaussian blur with linear sampling  (0) 2016.10.22
Blur 1  (0) 2016.10.12
UV Texture Coordinates and Texture Mapping - OpenGL / DirectX  (0) 2016.08.14
normal map compression  (0) 2016.06.13
Semantics  (0) 2016.05.09
Posted by 붕대마음

댓글을 달아 주세요

이번에 kasa에서 발표할 주제는 AA.
Sampling 내용 절반에 AA관련 내용 절반.
아...pt만들기 힘들었어...ㅜㅜ....

AA.vol1.egg

AA.vol2.egg

AA.vol3.egg

AA.vol4.egg

슬라이드 쉐어 :

https://www.slideshare.net/MinwooLee1/anti-aliasing-61928066

참고했던 링크들...

Sampling and Antialiasing.
https://graphics.stanford.edu/wikis/cs148-11-summer/FrontPage?action=AttachFile&do=get&target=148-3.pdf
Turn Continuous function into discrete samples.
샘플링을 하면 연속적인 신호가 이산신호로 바뀐다.
ex) - Rasterization(2d)
1. 참고 : (http://lifeisforu.tistory.com/27)
2. 벡터 또는 윤곽선 데이터를 비트맵으로 바꾸는 과정. 벡터 데이터에서 주사선 순서대로
위에서부터 아래로, 좌에서 우로 해당되는 픽셀의 위치를 계산해서 화면에 표시.
- Audio(1d)
- Video(2d + time)
- Triangulation(3D, 삼각화)
1. Triangulaton of Simple Polygons : http://vterrain.org/Implementation/Libs/triangulate.html
2. Triangulation by Ear Clipping 문서 : http://blog.naver.com/mpihs/110129482007
3. Polygon Triangulation 구현
http://kipl.tistory.com/12
http://kipl.tistory.com/13

Anti Aliasing 관련.
http://www.svi.nl/AntiAliasing

Wagon Wheel Effect.
https://www.youtube.com/watch?v=jHS9JGkEOmA
https://www.youtube.com/watch?v=rVSh-au_9aM
http://www.michaelbach.de/ot/mot_wagonWheel/
이동할 때 회전하는 마차나 바퀴의 바퀴살이 어느 일정한 순간 역방향으로 움직이는 것 같은
인상을 주는 광학적 현상.
바퀴살이 전방으로 움직이는 위치에 있지 않고 속도를 늦추는
위치에 있을 때 촬영기 셔터를 개방함으로서 발생한다.

Jaggies : 그래픽상에서 나타나는 계단현상, 정식명칭은 aliasing, Jaggies는 일종의 속어.
aliased 이미지를 jaggies라고 하기도 한다.
anti aliasing을 적용할 경우 jagged edge는 인접한 픽셀 사이를 부드럽게 연결하기 위해
회색의 중간 음영을 삽입하여 계단모양을 완화 할 수 있다.

dpi (dot per inch) 와 ppi (pixels per inch)의 차이점
http://ttokkan4995.blog.me/70105277403
ppi는 1인치를 표현하는데 몇 픽셀로 이루어 지는지,
dpi는 1인치를 몇 개의 도트로 표현하는지를 나타낸다.
dot는 해상도와 무관하여 해상도가 변해도 dot수가 변하지 않지만
출력시 인치당 dot수에 따라 이미지의 품질을 결정할 수 있다.
이에 반해 픽셀은 해상도가 변하며 이미지의 크기를 결정하는 단위.
보통 모니터에서 표현되는 해상도는 픽셀의 숫자를 말한다.

샘플링 이론

http://graphics.hallym.ac.kr/teach/2008/acg/src/chap04-2.pdf

샘플링과 필터링

http://blog.daum.net/621hanul/121

샘플링과 앨리어싱

https://graphics.stanford.edu/wikis/cs148-11-summer/FrontPage?action=AttachFile&do=get&target=148-3.pdf

신호 시스템 - 샘플링과 필터링

http://www.mcublog.co.kr/category/기술자료실/디지털신호처리

Image Processing & Antialiasing

http://www.cs.brown.edu/courses/csci1230/lectures/06_Image_Processing_II.pdf

엔하위키 미러 - 안티에일리어싱(fsaa, msaa, rsaa, qaa, taa, csaa, mlaa, fxaa, smaa)

http://mirror.enha.kr/wiki/%EC%95%88%ED%8B%B0%EC%97%90%EC%9D%BC%EB%A6%AC%EC%96%B4%EC%8B%B1

균님

http://www.synch3d.com/wiki/moin/moin.cgi/Real_2dTimeRendering

샘플링

http://graphics.hallym.ac.kr/teach/2008/acg/src/chap05-1.pdf

Real time rendering ch4.

http://redcarrot.tistory.com/69

xBit - on the way to ideal picture : anti - aliasing by contemporary graphics cards.

http://www.xbitlabs.com/articles/graphics/display/antialiasing.html

기글 하드웨어 - 지피지기 VGA 2

http://gigglehd.com/zbxe/3891604

기글 - nvidia csaa, Jittered Sampling

http://gigglehd.com/zbxe/infoboard/3607633

기글 - csaa faa

http://gigglehd.com/zbxe/4973531

기글 - MLAA
http://gigglehd.com/zbxe/4773678

기글 - FXAA
http://gigglehd.com/zbxe/6042724

아이온 - Msaa csaa (사진많음)

http://www.thisisgame.com/board/view.php?id=196327&board=0&category=730&subcategory=&page=31&best=&searchmode=title&search=&orderby=&token=

Tom's hardware - faa(fragment aa)

http://www.tomshardware.com/reviews/matrox-parhelia,465-7.html

ANANDTECH - faa

http://www.anandtech.com/show/911/7

TAA(Transparency)

http://www.bodnara.co.kr/bbs/article.html?D=7&cate=3&d_category=2&num=53384&mn=10

GAA(Gamma Corrected Anti ALiasing)
http://www.technoa.co.kr/content/View.tch?pPageID=58994

Ggoltong Games - faa

http://gtgames.egloos.com/4777121

루리웹 - fxaa, smaa, msaa 비교

http://bbs1.ruliweb.daum.net/gaia/do/ruliweb/default/xbox/151/read?articleId=4925563&objCate1=34&bbsId=G001&sortKey=depth&platformId=6&pageIndex=1

찡가의 마징가 본부 (MSAA)

http://zzinga.egloos.com/3409362

찡가의 마징가 본부 (MLAA)
http://zzinga.egloos.com/3137872

ShaderX5. Selective Supersampling

http://ohyecloudy.com/pnotes/archives/375

가마수트라 - 리졸브를 해결하라

http://seriousgame.kocca.kr/info/column/__icsFiles/afieldfile/2010/05/02/72702.pdf

오즈라엘 - Deferred MSAA

http://ozlael.egloos.com/3423138

데브루키 aa 스터디

http://www.slideshare.net/JinWooLee2/anti-aliasing

Msaa vs mlaa vs practical mlaa 정리

http://blog.daum.net/sj_fly/11

gpg - MSAA

http://www.gpgstudy.com/m/forum/post/106570

10년을 지난 3d 그래픽 카드의 역사

http://jacking.springnote.com/pages/2012946

udk - directx 11 의 앤티 앨리어싱

http://udn.epicgames.com/Three/AntiAliasingDX11KR.html

잡동사니 - gsdx의 fxaa 기능

http://blog.daum.net/nbdjj1998/108

cagetu - msaa

http://cagetu.egloos.com/5455985

cagetu - SMAA : Enhanced Subpixel Morphological Antialiasing. (FXAA, MLAA)

http://cagetu.egloos.com/5602818

cagetu - Visual Acuity, Vernier Acuity

http://cagetu.egloos.com/5603866

cagetu - AA 관련 기술들

http://cagetu.egloos.com/5581601

Mirz - MLAA

http://mirz.tistory.com/entry/MLAA-Morphological-Anti-Aliasing

Mirz - AntiAliashing With Transparency

http://mirz.tistory.com/entry/AntiAliasing-With-Transparency

수양버들 - MLAA

http://egohim.blog.me/70106401538

Nc 이재윤 - SMAA

http://www.slideshare.net/JaeyunLee1/smaa-enhanced-morphological-antialiasing

AMD MLAA

http://www.narics.net/zbxe/review/1491523

Intel MLAA

http://visual-computing.intel-research.net/publications/papers/2009/mlaa/mlaa.pdf

gpu pro2 - Pratical Morphological AA (MLAA)
http://www.iryoku.com/mlaa/

SigGraph 2010 - Practical MLAA
http://igm.univ-mlv.fr/~biri/mlaa-gpu/prez_siggraph_mlaagpu.pdf

NVIDIA FXAA

http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf

msaa vs mlaa vs practical mlaa 정리

http://blog.daum.net/sj_fly/11

파코즈

http://www.parkoz.com/zboard/view.php?id=my_tips&no=10318

http://www.parkoz.com/zboard/view.php?id=my_tips&no=10316

파코즈 - MSAA CSAA

http://blog.daum.net/white_sm77/50

파코즈 fsaa, csaa

http://www.parkoz.com/zboard/view.php?id=int_vganews&page=1&sn1=&divpage=1&sn=off&ss=off&sc=on&keyword=msaa&select_arrange=headnum&desc=asc&no=5613

Nvidia - Csaa

http://developer.nvidia.com/csaa-coverage-sampling-antialiasing

inferred lighting

http://www.slideshare.net/guardin/inferred-lighting-3001875

엔비디아, 그들만의 aa기술

http://www.parkoz.com/zboard/view.php?id=int_vganews&no=9237

랩좀비 (게임개발 포에버) - FXAA

http://www.gamedevforever.com/46

크라이시스2 선명한 텍스처의 AA방식

http://www.parkoz.com/zboard/view.php?id=my_tips&no=14494

UDN - 포스트 프로세스 앤티 앨리어싱 이펙트 (MLAA)

https://udn.epicgames.com/Three/PostProcessAAKR

nvidia : hraa

http://www.nvidia.co.kr/object/feature_hraa.html

nc 이재윤 - smaa
http://www.slideshare.net/JaeyunLee1/smaa-enhanced-morphological-antialiasing

Visual Acuity, Vernier Acuity, Anti-Aliasing, and You
http://filmicgames.com/archives/860

'작업장 > 발표하기' 카테고리의 다른 글

Anti Aliasing  (0) 2012.05.03
MProject  (0) 2011.07.18
StencylWorks 발표  (0) 2011.07.01
부게게 스터디 발표. - 빛 기초.  (2) 2011.05.29
발표준비 - 라이팅  (0) 2011.05.20
kasa study ssao 발표자료  (0) 2010.12.06
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함