GLSL에서 사용하지 않는 가변 변수는 무엇이됩니까 GPU의 인터 쉐이더 버퍼에는 이러한 값들이 채워지지만 조각 쉐이더는 사용하지 않기 때문에 unnesscary 버텍스 쉐이더 (정점 당)에서 수행 된 계산 &은 프래그먼트 쉐이더에서 사용되지 않았기 때문에 떨어졌습니다.조각 쉐이더에서 사용되지 않는 다양한 변수들 GLSL - 퍼프를 해칠 수 있습니까?
- GLSL 컴파일러는 이러한 종류의 잘못된 실행을 최적화 할 수 있습니까?
- 그렇지 않다면 이러한 변화가 exapmle 아래의 버텍스 쉐이더에서 완전히 제거 될 수 있다면 성능이 향상 될 것입니까?
참고 : - GL 응용 프로그램을 디버깅 &을 프로파일 링하는 동안이 쉐이더를 통해 온, 그래서이 어떤 반환 한 원인이 될 수 있는지 알고 궁금해서 나는이 쉐이더를 작성 havent 한. 문제 또는 컴파일러가 그것을 최적화했을 것입니다 - FS에서 사용되지 않는 경우.
예 :
버텍스 쉐이더
attribute vec3 Normal;
attribute vec4 Vertex;
uniform mat3 NormalMatrix;
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ModelViewMatrix;
precision mediump float;
**varying vec3 N;**
**varying vec3 v;**
varying vec2 texCor;
void main(void)
{
v = vec3(ModelViewMatrix * Vertex);
N = normalize(NormalMatrix * Normal);
gl_Position = ModelViewProjectionMatrix * Vertex;
texCor = MultiTexCoord0.xy;
}
조각 쉐이더
precision mediump float;
uniform sampler2D data;
**varying vec3 N;**
**varying vec3 v;**
varying vec2 texCor;
void main (void)
{
vec2 TexCoord = texCor;
vec4 RGB = texture2D(data, TexCoord);
gl_FragColor = vec4(0.0, 0.0, 0.0 , RGB.r);
}
설명해 주셔서 감사합니다. "응용 프로그램의 CPU에서 균일 한 계산을 수행하여 유니폼을 만드십시오."- 무슨 뜻인지 이해하지 못했습니다. -이 작업을 GPU (코어)로 오프 로딩하면이 작업을 수행하는 것보다 빠르다고 생각했습니다. cpu?, 아니면 여기에 뭔가 빠졌습니다. –
실제로 나는 그 사과에 대해 사과해야 할 것입니다. 나는 그것을 빨리 읽고 MVP의 별도 곱셈으로 읽었다. CPU에 MVP를 연결하는 것은 분명합니다. 이미 미안합니다! (한 손에 샌드위치로 점심을 먹으면서 빠르게 대답하는 단점) – solidpixel