일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 운영체제
- bezier curve
- 그래픽스
- modeling
- Graphics
- OpenGL
- window programming
- 윈도우
- shader programming
- 윈도우 구조
- win32
- 컴퓨터 구조
- 베지에 곡선
- 셰이더프로그래밍
- 셰이더
- Mesh Processing
- 윈도우프로그래밍
- c4d
- 그래픽스기초
- 렌더링
- 컴퓨터 아키텍쳐
- MFC
- Geometry Modeling
- Win32 API
- 윈도우 프로그래밍
- 핵심 API로 배우는 윈도우프로그래밍
- MFC 윈도우 프로그래밍
- denoising
- 오픈지엘
- shader
Archives
- Today
- Total
오다기리 박의 알고리즘 노트
[셰이더 프로그래밍 입문] 6. 툰셰이더 본문
6. 툰셰이더
ceil() : 올림함수
행렬 합치기 : 여러 개의 행렬을 미리 곱해 놓은 뒤, 그 결과를 정점변환에사용해도 결과는 동일하고 속도는 더 빠름
역행렬 : 반대방향으로 공간변환시 사용
난반사광의 양 | 툰셰이더 값 |
0 | 0 |
0~0.2 | 0.2 |
0.2~0.4 | 0.4 |
0.4~0.6 | 0.6 |
0.6~0.8 | 0.8 |
0.8~1 | 1 |
▶렌더몽키 코드
- 버텍스 셰이더
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | float4x4 gWorldViewProjectionMatrix; float4x4 gInvWorldMatrix; float4 gWorldLightPosition; struct VS_INPUT { float4 mPosition : POSITION; float3 mNormal: NORMAL; }; struct VS_OUTPUT { float4 mPosition : POSITION; float3 mDiffuse : TEXCOORD1; }; VS_OUTPUT vs_main( VS_INPUT Input ) { VS_OUTPUT Output; Output.mPosition = mul( Input.mPosition, gWorldViewProjectionMatrix ); float3 objectLightPosition = mul( gWorldLightPosition, gInvWorldMatrix); float3 lightDir = normalize(Input.mPosition.xyz - objectLightPosition); Output.mDiffuse = dot(-lightDir, normalize(Input.mNormal)); return( Output ); } | cs |
- 픽셀 셰이더
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | float3 gSurfaceColor; struct PS_INPUT { float3 mDiffuse : TEXCOORD1; }; float4 ps_main(PS_INPUT Input):COLOR { float3 diffuse=saturate(Input.mDiffuse); diffuse=ceil(diffuse*5)/5.0f; return float4(diffuse.xyz*gSurfaceColor,1);; } | cs |
- 결과
만화같은 명암을 입히는 툰셰이더입니다. 명암처리를 부드럽게 하는대신 2~3단계로 딱딱 끊어서 표현하였습니다.
'컴퓨터 그래픽스 > 쉐이더' 카테고리의 다른 글
[셰이더 프로그래밍 입문] 8. 환경매핑(반사매핑) (0) | 2018.07.01 |
---|---|
[셰이더 프로그래밍 입문] 7. 법선매핑 (0) | 2018.07.01 |
[셰이더 프로그래밍 입문] 5.디퓨즈/스페큘러 매핑 (0) | 2018.07.01 |
[셰이더 프로그래밍 입문] 4.조명셰이더 (0) | 2018.07.01 |
[셰이더 프로그래밍 입문] 3. 텍스처 매핑 (0) | 2018.07.01 |