inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

OpenGL 쉐이더 (2) shader 3D 그래픽스 - 프로그래머블 파이프라인, 기하학 기초, 삼각형 출력

22-6 varying color 프로그램 관련 질문

해결된 질문

228

모행

작성한 질문수 7

0

vertex shader의

out vec4 vColor 값이

 

fragment shader의

in vec4 vColor 로 어떻게 매칭이 되는건지 좀 궁금합니다.

 

일단 제가 추측한바로는

  1. 두개다 변수명이 vColor 같기 때문에 매칭이된다.

  2. 선언된 순서에 따라
    vertex shader 에서 out vColor 이 0번 varying register에 등록이 되고,


    fragment shader에서 in vColor 이 0번 varying register에 등록이 되어서 매칭이 된다.

이렇게 가정할 수 있을것 같은데, 2번 같은 경우는 이전 설명에서 GPU에서 대부분 순서대로 할당하지만, 임의로 할당할 수 있다고 하였고, 또한 layout 같은 키워드도 있어서 순서 보장이 안될 것 같아서 변수명으로 매칭되는 1번이지 않을까 싶은데, 제가 이해한게 맞는지 궁금합니다.

그리고 추가 질문으로 fragment shader의 out으로 FragColor를 지정하게 되어서 여기에서 지정된 컬러가 FrameBuffer에 씌여진다고 하셨는데, fragment shader의 out이 그림상에는 1개밖에 없는데, 여러개 지정가능하다고, 얼핏 강의에서 들은것 같은데, 관련된 부분은 추후 강의에서 확인이 가능한지 궁금합니다.
그리고 만약 여러개 지정이 가능하면 첫번째 out만 무조건 FrameBuffer에 씌여지는건지도 궁금합니다.

감사합니다.

c++ OpenGL glsl

답변 1

1

드립커피+한모금더

안녕하세요.

출장 관계로, 답변이 늦었습니다. ^^;;

 

우선, shader 변수들은 변수명으로 서로 link 됩니다.

컴파일러에서, vertex shader 의 out 에 있는 변수 이름과, fragment shader 의 in 에 있는 변수 이름이 일치하면 서로 연결 시키게 됩니다.

역으로, 서로 연결되는 변수 이름이 없다면, warning 이나, error 메시지를 출력해 줍니다.

 

fragment shader 의 out 은 사실 draw buffer 의 설정에 따라서 달라지는데,

OpenGL draw buffer 의 최초 설정은 framebuffer 의 RGBA 값으로 출력하게 되어 있어서,

out vec4 fragColor 라고 하면, 그 값이 그대로 연결되는 것입니다.

draw buffer 의 설정을 변경할 수 있어서, 그런 경우에는 여러 개의 RGBA 값을 출력하거나, depth 값을 출력하게 하는 것도 가능합니다.

 

다만, 이런 부분은 상당히 고급 기법이 되어서,

OpenGL 강의의 8번 이나 9번에서 다룰 계획이었고, 지금은 7번까지 제공되고 있습니다.

추가 강의를 제작하게 되면, 해당 내용이 들어갈 것 같습니다.

감사합니다.

코딩살구클럽 관련 건의사항

0

4

0

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

4

0

Reticle이 안나옵니다.

0

10

1

진행 방법 질문드립니다!

0

32

2

Singleton 관련 질문입니다.

1

31

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

55

2

AddGameFrameworkComponentReceiver vs AddExtensionHandler

0

24

0

2주차 개념#12 트리 순회

0

25

2

백준 사이트 서비스 종료

0

112

3

프로젝트 질문 문의

0

46

1

백준사이트가 종료된다고 합니다.

0

284

2

맵핑부분..

0

34

2

백준 서비스 종료

9

883

1

ABP "스테이트의 시퀀스 플레이어에 따른 자동 규칙"질문드립니다.

0

38

1

사용하시는 툴 질문 드립니다.

0

38

2

sk 하이닉스 코테 대비

0

367

2

3-G 최댓값 질문

0

50

1

문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요

0

108

2

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

83

2

3-I 코드 질문드립니다.

0

62

2

3-N 질문 있습니다.

0

66

2

동적배열 Vector의 push_back 함수에서 조건문 질문

0

75

1

#include "./common.c"오류

0

310

1

21-8 layout 키워드 : 레지스터 개수 파악

0

186

1