쉐이더는 일반 프로그램과 달리 cpu 가 아닌 gpu 에서 실행된다.
vertext shader 에서 output 에 해당하는 변수와 이름과 타입이 같은
변수가 fragment shader 의 input 으로 들어오면
두 변수를 같은 것으로 취급하도록 링킹이 이루어진다.
어플리케이션 cpu 에서 gpu 로 데이터를 전달하기 위한 수단이다. uniform 은 vertext attribute 와는 달리 글로벌하다. uniform 변수는 각 쉐이더 프로그램마다 유일하게 하나 있다.
또한 uniform 변수는 어떤 쉐이더 프로그램의 어떤 단계의 모든 쉐이더로부터 접근가능하다. 두번째로, uniform 값을 어떤 값으로 설정하든지, uniform 값들은 그 값들이 리셋되거나 업데이트 되기 전까지 그들의 값을 계속 유지한다.
주의사항: glsl code 에서 어디에도 사용되지 않는 uniform 변수를 선언하면 컴파일러는 컴파일 된 버전에서 그 변수를 제거할 것이고, 이는 몇가지 큰 오류를 일으키는 원인이 될것입니다.
uniform 변수 값이 바뀔 때 우리는 glUseProgram 함수를 써야 합니다. 왜냐하면, 이는 현재 쉐이더 프로그램에서 바뀐 uniforrm 값을 사용하도록 해주기 때문입니다. uniform 은 각 프레임마다 바뀌는 값들, 혹은 어플리케이션과 쉐이더 사이에 데이터를 교환할 때 사용학기 유용한 툴입니다.