무민은귀여워

0702 과제 본문

IT/기타

0702 과제

moomini 2019. 7. 2. 22:27
반응형

1. 디퍼드와 포워드 랜더링을 조사해오세요.

포워드 렌더링

  • 이전부터 사용되던 방식
  • 3D공간에 존재하는폴리곤을 픽셀화하여, 그 픽셀마다 쉐이딩과 라이팅 연산을 더하는 방식으로 묘사
  • 장점 
    • 비교적 저사양에서도 작동. 동적 광원 모델을 애니메이션 종류나 하드웨어에 구애되지 않고 자유롭게 사용
    • 앤티얼라이싱을 지원하는 하드웨어에서 어떤 구성요소든 렌더링할 수 있다는 장점
  • 단점
    • 연산이 느리다. 광원이 여러개일 때 각 광원마다 렌더링 프로세스 횟수가 늘어나 성능이 떨어짐
    • 그림자 처리가 어렵고 화면 깊이값을 이용한 포스트 이펙트는 따로 처리해야 함

디퍼드 렌더링

  • 많이 사용하는 덩어리를 미리 선처리해서 메모리에 보관해 뒀다가 재사용하는 방식
  • 장점
    • 수많은 동적 라이팅을 실시간으로 보여줄 수 있다. 
    • 수많은 오브젝트와 복잡한 모델링을 표현할 때 유리하다.
  • 단점
    • 추가 메모리를 많이 필요로 함
    • 고사양 하드웨어 요구
    • 안티앨리어스를 구현하기 까다롭다. 어떤 물체가 어떤 표면재질인지 알 수 없이 픽셀값만 계산해야 한다는 단점
    • 수시로 GPU메모리에서 많은 정보를 가져오느라 대역폭이나 용량이 결과물 속도에 영향을 준다는 단점

※ 참고 사이트

https://www.zdnet.co.kr/view/?no=20120328142201&re=R_20120328143001

 

[게임테크] 하복, 포워드-디퍼드 렌더링 선택 전략

하복이 비전 엔진을 통해 지형 설계를 위한 렌더링 방식 선택 전략을 제시했다. 여러 동적 광원을 다루는 공간에서 포워드 렌더링과 디퍼드 렌더링간 차이와 각 특성을 짚고 비전 엔진을 통한 사례를 소개했다.​...

www.zdnet.co.kr

https://m.blog.naver.com/blue9954/220296252565

 

포워드 랜더링, 디퍼드 랜더링.

포워드 랜더링. 전통적인 랜더링 방식인 포워드 랜더링 방식은 3D 역사의 산증인이다. 많은 수많은 명작들...

blog.naver.com

2. 프레넬에 대해 조사해오세요.

프레넬 공식 (Fresnel equation)

모든 빛은 반사, 흡수, 굴절이라는 과정을 거치게 된다. 이때 프레넬 공식을 사용해서 빛의 움직임을 계산하게 된다.

 

(굴절률 : 빛이 진공에서 특정 매질로 이동할 때 속도가 얼마나 느려지는지 그 비율을 측정한 것)

 

그래픽스에서 반사와 굴절을 계산하기 위해서는 얼마만큼의 빛이 반사되고 얼마만큼의 빛이 굴절되는지 알아야 한다. 그것을 알려주는 공식이 프레넬 공식이다.

 

이 공식을 통해 0도에서의 반사율 값(근사치)인 F0를 구하고, 일반적으로 이 값을 "Metallic" 핀에다가 넣어 준다.

 

※ 참고 사이트

https://lifeisforu.tistory.com/384

 

[ PBR 이란 무엇인가 ] 17. Fresnel 이란?

주의 : 잘못된 내용이 포함되어 있을 수 있으므로 이상하면 참고자료를 확인하세요. [ PBR 이란 무엇인가 ] Fresnel 이란? 프레넬 공식이란? 앞서 [ [ 번역 ] 모든 것은 프레넬을 가집니다 ] 와 [ Reflection 에..

lifeisforu.tistory.com

3. 원의 지름을 입력받아 입력받은 지름을 가지는 원을 그립니다. 원​의 지름은 최소2 최대 15입​니다.​

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include<stdio.h>
#include<Windows.h>
#include<cmath>
 
void gotoxy(int x, int y)
{
    COORD Pos;
    Pos.X = x;
    Pos.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
};
 
int main()
{
    // 3. 원의 지름을 입력받아 입력받은 지름을 가지는 원을 그립니다. 원의 지름은 최소 2 최대 15입니다.
 
    int originX = 40, originY = 20;
    double r, input;
 
    printf("반지름을 입력하세요 : ");
    scanf_s("%lf"&input);
 
    r = input / 2;
 
    for (int x = 0; x < 100; x++)
    {
        for (int y = 0; y < 100; y++)
        {
            if (sqrt(pow(x - originX, 2+ pow(y - originY, 2)) <= r)
            {
                gotoxy(x, y);
                printf("*");
            }
        }
    }
 
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 
    // 4. 위 예제에서 안이 비어있는 원을 그립니다. 경계처리는 버림, 반올림, 올림 자유입니다.
    printf("반지름을 입력하세요 : ");
    scanf_s("%lf"&input);
 
    r = input / 2;
 
    system("cls");
 
    for (int x = 0; x < 100; x++)
    {
        for (int y = 0; y < 100; y++)
        {
            int calc = sqrt(pow(x - originX, 2+ pow(y - originY, 2));
            if (calc == r)
            {
                gotoxy(x, y);
                printf("*");
            }
        }
    }
 
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 
    return 0;
}
cs

 

4. 위 예제에서 안이 비어있는 원을 그립니다. 경계처리는 버림, 반올림, 올림 자유입니다.​

3번 참조

반응형

'IT > 기타' 카테고리의 다른 글

0709 과제  (0) 2019.07.09
0703 과제  (0) 2019.07.03
0701 과제  (0) 2019.07.01
메모) php 코딩 규약  (0) 2018.11.26
[Ruby on rails] 테이블 관리 1:1, 1:n, m:n 관계  (0) 2018.11.04
Comments