반응형
precision 을 잘못 지정하여 하루의 시간을 날린 일이 있어 해당 내용에 대해서 정리를 하겠습니다.
shader 작성시에 precision 에 대해서 잘 알고 작성해야 합니다.
precision 은 shader 에 전달되는 데이터를 얼마만큼의 bit 를 사용할지를 결정 한다고 보시면 됩니다.
아래 표는 precision 에 따른 사용할 데이터의 범위이다.
(www.khronos.org/registry/OpenGL/specs/es/3.2/GLSL_ES_Specification_3.20.pdf )
사용방법은 간단합니다.
precision 명령어를 통해 모든 변수에 대해서 동일하게 지정해주거나
특졍 변수에 highp/mediump/lowp 를 지정해서 사용할 수 있습니다.
example 로 마무리하겠습니다.
precision highp float;
layout (location = 0) in vec4 inVertex; //precision 명령에 의해 highp 로 적용
layout (location = 1) in lowp vec3 inColor; //lowp 를 명시했기에 lowp 로 적용
uniform mat4 MVPMatrix; //precision 명령에 의해 highp 로 적용
out lowp vec3 outColor; // lowp 를 명시했기에 lowp 로 적용
void main()
{
highp vec4 vertex = MVPMatrix * vec4(inVertex);
outColor = inColor;
gl_Position = vertex;
}
※ 주의사항 : 그래픽카드나 제공된 SDK 에 따라서 모두 highp 로 동작할 수 있습니다.
반응형