조각 셰이더에서 사용하지 않는 변수는 렌더링 결과를 변경합니다.

크리스

내 조각 셰이더는 다음과 같습니다.

#version 430 core 
uniform vec4 Ambient;
uniform vec3 LightColor;
uniform vec3 LightDirection;
uniform vec3 HalfVector;
uniform float Shininess;
uniform float Strength;
in vec4 color;
in vec3 Normal;

out vec4 FragColor;
out vec3 directfeed;
out vec3 normalfeed;

void main()
{
    float diffuse = max(0.0f, dot(Normal, LightDirection));
    normalfeed = Normal;
    directfeed = LightDirection;
    float specular = max(0.0f, dot(Normal, HalfVector));
    if(diffuse <= 0.00001)
        specular = 0.0f;
    else
        specular = pow(specular, Shininess);
    vec4 ReflectLight = vec4(LightColor*specular*Strength, 0.0);
    FragColor = min(color*Ambient+ReflectLight, vec4(1.0));
}

나는이 두 줄을 삭제하는 경우 normalfeed = Normal;directfeed = LightDirection;, 결과는 다를 수 있지만,이 두 개의 매개 변수 normalfeed와는 directfeed 왜 전혀 일을하지? 두 변수를 피드백 버퍼에 출력하려고하면 다음과 같이합니다.

char* oVerts[] = { "normalfeed" ,"gl_NextBuffer","directfeed" };
glTransformFeedbackVaryings(Program, 3, oVerts, GL_INTERLEAVED_ATTRIBS);

Program다시 링크 후 아무것도 나오지 않습니다.

FK

조각 셰이더에서 변환 피드백을 사용할 수 없습니다. 정점 또는 지오메트리 셰이더 만 허용됩니다. 이에 대한 문서는 다음을 참조하십시오.

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml

당신은 변수에서 무엇을 기대 normalfeed하고 directfeed? 프레임 버퍼에서 일부 출력을 생성하기를 원하십니까? 둘 이상의 색상 부착물에서 출력을 활성화해야합니다. 이를 설정하려면 다음 기능에 대한 문서를 읽는 것이 좋습니다.

glDrawBuffers
glBindFramebuffer
glBindRenderbuffer
glRenderbufferStorage
glFramebufferRenderbuffer

선언 한 변수가 디버깅 목적인 경우 텍스처로 렌더링하는 것이 흥미로울 수 있습니다.

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

두 번째 패스에서 이러한 디버그 텍스처를 사용하여 실제 장면을 오버레이하는 쿼드를 그릴 수 있습니다. 이 기술은 깊이 버퍼 또는 표면 법선을 시각화하고 디버그하는 데 자주 사용됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

조각 셰이더 내에서 이전 렌더링의 결과를 사용할 수있는 방법이 있습니까?

분류에서Dev

VueJS 앱에서 올바른 결과를 렌더링하지 않는 SASS 변수

분류에서Dev

정점에서 조각 셰이더로 전달되지 않는 GLSL 변수

분류에서Dev

각 DOM 렌더링에서 값이 변경되지 않도록 변수를 어떻게 선언합니까?

분류에서Dev

렌더링 된 지시문의 결과를 변수로 각도 변환에 전달하는 방법

분류에서Dev

내 모델이 LWJGL에서 셰이더와 VBO를 사용하여 아무것도 렌더링하지 않는 이유는 무엇입니까?

분류에서Dev

React는 setInterval을 사용할 때 실제로 상태를 변경하지 않고 렌더링합니다.

분류에서Dev

조각 셰이더에서 표준 공간 조명 위치를 모델 공간으로 변환하는 문제

분류에서Dev

cocos2d-x 3.1에서 조각 셰이더를 사용하는 방법은 무엇입니까?

분류에서Dev

cocos2d-x 3.1에서 조각 셰이더를 사용하는 방법은 무엇입니까?

분류에서Dev

ReactJS 변수 변경이 요소를 렌더링하지 않습니다.

분류에서Dev

OpenGL GLSL에서 빛과 같은 그라디언트를 생성하지 않는 조각 셰이더

분류에서Dev

Windows에서는 작동하지만 Linux에서는 작동하지 않는 셰이더를 사용한 OpenGL 렌더링

분류에서Dev

OpenGL의 조각 셰이더에서 텍스처 색상을 변경하는 것이 제대로 작동하지 않습니다.

분류에서Dev

GLSL 셰이더를 사용한 후 첫 번째 삼각형이 렌더링되지 않습니다.

분류에서Dev

OpenGL은 정점 셰이더에서 조각 셰이더로 변수를 보낼 수 없습니다.

분류에서Dev

React Router Link는 컴포넌트를 렌더링하지 않지만 URL을 변경합니다.

분류에서Dev

탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

분류에서Dev

탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

분류에서Dev

탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

분류에서Dev

렌더링에 영향을주지 않는 변수에 대해 상태를 사용해야합니까?

분류에서Dev

렌더링에서 여러 변수를 전달하는 Django

분류에서Dev

foreach Symfony 2 ~ twig에서 렌더링 된 변수를 사용하는 방법

분류에서Dev

구성 요소가 렌더링을 완료하면 각도 2에서 경로를 변경합니다.

분류에서Dev

상태를 사용하는 동안 반응 js에서 렌더링이 작동하지 않습니다.

분류에서Dev

구성 요소를 다시 렌더링하지 않는 UseContext 변경에 반응

분류에서Dev

OpenGL에서 셰이더를 적용 할 때 텍스처가 렌더링되지 않습니다.

분류에서Dev

Razor보기에서 이동 경로를 렌더링하지 않는 사용자 지정 경로

분류에서Dev

Xamarin Xam.Plugins.Forms.Svg는 SvgPath를 변경하여 이미지를 다시 렌더링합니다.

Related 관련 기사

  1. 1

    조각 셰이더 내에서 이전 렌더링의 결과를 사용할 수있는 방법이 있습니까?

  2. 2

    VueJS 앱에서 올바른 결과를 렌더링하지 않는 SASS 변수

  3. 3

    정점에서 조각 셰이더로 전달되지 않는 GLSL 변수

  4. 4

    각 DOM 렌더링에서 값이 변경되지 않도록 변수를 어떻게 선언합니까?

  5. 5

    렌더링 된 지시문의 결과를 변수로 각도 변환에 전달하는 방법

  6. 6

    내 모델이 LWJGL에서 셰이더와 VBO를 사용하여 아무것도 렌더링하지 않는 이유는 무엇입니까?

  7. 7

    React는 setInterval을 사용할 때 실제로 상태를 변경하지 않고 렌더링합니다.

  8. 8

    조각 셰이더에서 표준 공간 조명 위치를 모델 공간으로 변환하는 문제

  9. 9

    cocos2d-x 3.1에서 조각 셰이더를 사용하는 방법은 무엇입니까?

  10. 10

    cocos2d-x 3.1에서 조각 셰이더를 사용하는 방법은 무엇입니까?

  11. 11

    ReactJS 변수 변경이 요소를 렌더링하지 않습니다.

  12. 12

    OpenGL GLSL에서 빛과 같은 그라디언트를 생성하지 않는 조각 셰이더

  13. 13

    Windows에서는 작동하지만 Linux에서는 작동하지 않는 셰이더를 사용한 OpenGL 렌더링

  14. 14

    OpenGL의 조각 셰이더에서 텍스처 색상을 변경하는 것이 제대로 작동하지 않습니다.

  15. 15

    GLSL 셰이더를 사용한 후 첫 번째 삼각형이 렌더링되지 않습니다.

  16. 16

    OpenGL은 정점 셰이더에서 조각 셰이더로 변수를 보낼 수 없습니다.

  17. 17

    React Router Link는 컴포넌트를 렌더링하지 않지만 URL을 변경합니다.

  18. 18

    탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

  19. 19

    탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

  20. 20

    탭과 조각을 사용하고 조각 변경 / 바꾸기에서 인수를 잃지 않는 방법

  21. 21

    렌더링에 영향을주지 않는 변수에 대해 상태를 사용해야합니까?

  22. 22

    렌더링에서 여러 변수를 전달하는 Django

  23. 23

    foreach Symfony 2 ~ twig에서 렌더링 된 변수를 사용하는 방법

  24. 24

    구성 요소가 렌더링을 완료하면 각도 2에서 경로를 변경합니다.

  25. 25

    상태를 사용하는 동안 반응 js에서 렌더링이 작동하지 않습니다.

  26. 26

    구성 요소를 다시 렌더링하지 않는 UseContext 변경에 반응

  27. 27

    OpenGL에서 셰이더를 적용 할 때 텍스처가 렌더링되지 않습니다.

  28. 28

    Razor보기에서 이동 경로를 렌더링하지 않는 사용자 지정 경로

  29. 29

    Xamarin Xam.Plugins.Forms.Svg는 SvgPath를 변경하여 이미지를 다시 렌더링합니다.

뜨겁다태그

보관