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 |