본문 바로가기

Shader/GLSL

GLSL 접근 제어자 ( in, out, inout )

in: 입력 변수를 나타낸다. 이 변수는 셰이더로 데이터가 입력된다.

예를 들어, 정점 셰이더에서 정점의 위치를 나타내는 변수는 in으로 선언될 수 있다.

in vec3 position;


out: 출력 변수를 나타낸다. 이 변수는 셰이더에서 처리된 결과를 출력한다.

정점 셰이더에서 정점의 위치를 처리한 후, 이를 프래그먼트 셰이더로 전달할 때 사용될 수 있다.

out vec3 fragmentColor;



inout: 입출력 변수를 나타낸다.

이 변수는 셰이더로 데이터가 입력되고 처리된 후 결과가 다른 곳으로 출력될 때 사용된다. 일반적으로 geometry shader에서 사용되며, geometry shader에서 입력 기하 형태를 조작하고 수정한 후에 출력으로 전달할 때 사용한다.

inout vec3 geometryPosition;

 


만약 접근 제어자를 따로 설정하지 않으면 기본으로 in이 적용된다.

데이터 타입을 지정하지 않고 매개 변수로 받는다면 기본적으로 in이 된다.


in은 깊은 복사를 해서 외부 함수로는 변형할 수 없다.
out은 얕은 복사를 한다.
inout은 얕은 복사를 한다.

 

inout과 out의 차이
inout
매개변수로 받은 값을 사용해서 값을 변형한다.

out
매개변수로 어떤 값을 받던 새롭게 initializing하여 새롭게 값을 내보낸다.

'Shader > GLSL' 카테고리의 다른 글

GLSL - 그라데이션  (0) 2024.01.19
시작 - GLSL [1]  (0) 2024.01.19
lowp mediump highp  (0) 2024.01.18
쉐이더 기본 설정  (0) 2024.01.18
GLSL 시작하기  (0) 2024.01.17