gouraud 셰이딩을 사용하여 출력 처리 없음

기 기 기

죄송합니다. 저는 OpenGL ES 및 처리 아래 처리 및 셰이더 출력 전용 배경에 대한 새로운 기능입니다.

PShader Gouraud, Phong;

rocket = loadShape("rocket.obj");
rocket.setFill(color(800, 0, 0));
Gouraud= loadShader("gouraudfragment.glsl","gouraudvertex.glsl");
Phong= loadShader("phongfragment.glsl","phongvertex.glsl");
background(0);

pushMatrix();
shader(Gouraud);
translate(130,height/2.0);
rotateY(rc);
rotateX(0.4);
noStroke();
fill(#800080);
box(100);

rc+=(0.02+speedCube);
rc*=dirCube;
popMatrix();

pushMatrix();
shader(Gouraud);
translate(width/2, height/2 + 100, -200);
rotateZ(PI);
rotateY(rr);
shape(rocket,100,100);

rr +=( 0.02+speedRocket);
rr*=dirRocket;
popMatrix();

정점 셰이더

varying vec3 N;
varying vec3 v;
varying vec4 diffuse;
varying vec4 spec;
attribute vec4 position;
attribute vec3 normal;
uniform mat4 modelview;
uniform mat4 projectionMatrix;
uniform mat3 normalMatrix;
uniform vec4 lightPosition;
uniform vec3 lightAmbient;
uniform vec3 lightDiffuse;
uniform vec3 lightSpecular;
uniform float SpecularPower;

void main()
{
   vec4 diffuse;
   vec4 spec;
   vec4 ambient;

   v = vec3(modelview * position);
   N = normalize(normalMatrix * normal);
   gl_Position = projectionMatrix * position;  

   vec3 L = normalize(lightPosition.xyz - v);
   vec3 E = normalize(-v);
   vec3 R = normalize(reflect(-L,N)); 

   ambient = vec4(lightAmbient,100.0);
   diffuse = vec4(clamp( lightDiffuse * max(dot(N,L), 0.0)  , 0.0, 1.0 ) ,100.0);
   spec = vec4(clamp (lightSpecular * pow(max(dot(R,E),0.0),0.3*SpecularPower) , 0.0, 1.0 ),100.0);

   color = ambient + diffuse + spec;
}

조각 셰이더

void main()
{
    gl_FragColor = color;
}

도와주세요! gouraud 음영을 적용하기 전에여기에 이미지 설명 입력

구라 우드 쉐이딩 적용 후 Gouraud 이후

진행 과정은 obj를로드하고 큐브를 그리고 gouraud 셰이더를 적용하지만 그 후에는 backgroud 만 표시되고 obj가로드되고 큐브가 사라집니다. 아무것도 표시되지 않습니다!

Rabbid76

셰이더는 컴파일 및 링크조차하지 않습니다. 버텍스 셰이더에는 1 개의 varying출력 ( color)이 있으므로 프레임 셰이더에는 입력이 필요합니다 varying vec4 color;.

varying vec4 color;

클립 공간 위치를 설정할 때 꼭짓점 좌표는 모델보기 및 투영 행렬에 의해 변환되어야합니다.

gl_Position = projectionMatrix * modelview * position; 

의 종류 사양 vN누락의 종류 ambient, diffuse그리고 spec있습니다 vec4보다는 vec3.

정점 셰이더 :

attribute vec4 position;
attribute vec3 normal;

varying vec4 color;

uniform mat4 modelview;
uniform mat4 projectionMatrix;
uniform mat3 normalMatrix;
uniform vec4 lightPosition;
uniform vec3 lightAmbient;
uniform vec3 lightDiffuse;
uniform vec3 lightSpecular;
uniform float SpecularPower;

void main()
{
   vec3 v      = vec3(modelview * position);
   vec3 N      = normalize(normalMatrix * normal);
   gl_Position = projectionMatrix * modelview * position;  

   vec3 L = normalize(lightPosition.xyz - v);
   vec3 E = normalize(-v);
   vec3 R = normalize(reflect(-L,N)); 

   vec4 ambient = vec4(lightAmbient,100.0);
   vec4 diffuse = vec4(clamp( lightDiffuse * max(dot(N,L), 0.0)  , 0.0, 1.0 ) ,100.0);
   vec4 spec = vec4(clamp (lightSpecular * pow(max(dot(R,E),0.0),0.3*SpecularPower) , 0.0, 1.0 ),100.0);

   color = ambient + diffuse + spec;
}

조각 셰이더 :

varying vec4 color;

void main()
{
    gl_FragColor = color;
}

물론 최소한 주변 광원을 설정해야합니다 ambientLight(). 당신은을 사용할 수 있습니다 directionalLight(), pointLight()또는 spotLight()도.
그러나 셰이더는 1 개의 광원 만 처리 할 수 ​​있습니다. 1 개의 광원이 더 많이 얻을 것입니다.

상단 endDraw ()의 OpenGL 오류 1282 : 잘못된 작업

당신이 1 개 이상의 광원을 사용하고자하는 경우에 당신은을 위해 버텍스 쉐이더하는 int 균일 한 배열을 사용하는 것 lightPosition, lightAmbient, lightDiffuse,와 lightSpecular. 참조 처리에 쉐이더의 유형 ( https://processing.org/tutorials/pshader/ )

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Apriori 알고리즘을 사용하여 출력 없음

분류에서Dev

watch 명령을 사용하여 파일의 최상위 명령 출력을 캡처 할 수 없음

분류에서Dev

Python : beautifulsoup을 사용하여 출력을 가져올 수 없음

분류에서Dev

명령의 출력을 캡처하여 처리 한 다음 터미널로 출력

분류에서Dev

Xcode에서 처리하기 위해 iPhone을 연결 한 후 장치 로그 출력이 없음

분류에서Dev

Hadoop Parquet을 사용하여 빅 데이터를 CSV 출력으로 처리

분류에서Dev

Linux : AWK gsub 명령이 올바른 출력을 처리하지 않음

분류에서Dev

Curl을 사용하여 응답에서 처음 20자를 출력하는 방법은 무엇입니까?

분류에서Dev

If를 사용하여 Shiny R을 사용하여 입력 및 열 이름 처리

분류에서Dev

다중 처리 기능의 출력을 저장하기 위해 다중 처리 공유 메모리를 사용할 수 없습니다.

분류에서Dev

동적 호출없이 출력 매개 변수를 사용하여 MethodInfo에서 대리인 만들기

분류에서Dev

병렬을 사용하여 고유 한 입력 파일을 고유 한 출력 파일로 처리

분류에서Dev

병렬을 사용하여 고유 한 입력 파일을 고유 한 출력 파일로 처리

분류에서Dev

끝없는 출력을 생성하는 Unix 명령 실행 처리

분류에서Dev

Powershell을 사용하여 Groovy 출력 추가 (>>) 리디렉션에 일괄 처리 할 때 발생하는 문제

분류에서Dev

txr 쿼리를 사용하여이 컴퓨터 출력을 어떻게 캡처 할 수 있습니까?

분류에서Dev

PowerShell을 사용하여 콘솔 앱의 무한 출력을 파이프 할 수 없음

분류에서Dev

네이티브 ajax를 사용하여 PHP 세션 변수에 Javascript 함수 출력 할당 [JQuery 없음 및 사용자 작업 없음 (클릭 없음)]

분류에서Dev

로컬 스크립트를 사용하여 Ansible의 출력을 처리하는 방법

분류에서Dev

Python Selenium을 사용하여 드롭 다운 메뉴를 선택할 때 출력이 없음

분류에서Dev

처음 두 조각 셰이더 출력이 다릅니다.

분류에서Dev

C ++-io 리디렉션을 사용하여 여러 정수 입력 및 출력

분류에서Dev

paramiko를 사용하여 ifconfig 출력을 볼 수 없습니다.

분류에서Dev

Spark Streaming을 사용한 후 출력이 없음

분류에서Dev

File :: Find 모듈을 사용할 때 출력이 없음

분류에서Dev

탐색 모음을 사용하여보기 내에서 기능을 처리 할 수 없음

분류에서Dev

powershell을 호출하는 cmd 명령에서 출력이 없음

분류에서Dev

EXPLAIN 출력을 사용하여 느린 MySQL 쿼리 최적화

분류에서Dev

C ++ "putchar"를 사용하여 바이너리로 단어 출력

Related 관련 기사

  1. 1

    Apriori 알고리즘을 사용하여 출력 없음

  2. 2

    watch 명령을 사용하여 파일의 최상위 명령 출력을 캡처 할 수 없음

  3. 3

    Python : beautifulsoup을 사용하여 출력을 가져올 수 없음

  4. 4

    명령의 출력을 캡처하여 처리 한 다음 터미널로 출력

  5. 5

    Xcode에서 처리하기 위해 iPhone을 연결 한 후 장치 로그 출력이 없음

  6. 6

    Hadoop Parquet을 사용하여 빅 데이터를 CSV 출력으로 처리

  7. 7

    Linux : AWK gsub 명령이 올바른 출력을 처리하지 않음

  8. 8

    Curl을 사용하여 응답에서 처음 20자를 출력하는 방법은 무엇입니까?

  9. 9

    If를 사용하여 Shiny R을 사용하여 입력 및 열 이름 처리

  10. 10

    다중 처리 기능의 출력을 저장하기 위해 다중 처리 공유 메모리를 사용할 수 없습니다.

  11. 11

    동적 호출없이 출력 매개 변수를 사용하여 MethodInfo에서 대리인 만들기

  12. 12

    병렬을 사용하여 고유 한 입력 파일을 고유 한 출력 파일로 처리

  13. 13

    병렬을 사용하여 고유 한 입력 파일을 고유 한 출력 파일로 처리

  14. 14

    끝없는 출력을 생성하는 Unix 명령 실행 처리

  15. 15

    Powershell을 사용하여 Groovy 출력 추가 (>>) 리디렉션에 일괄 처리 할 때 발생하는 문제

  16. 16

    txr 쿼리를 사용하여이 컴퓨터 출력을 어떻게 캡처 할 수 있습니까?

  17. 17

    PowerShell을 사용하여 콘솔 앱의 무한 출력을 파이프 할 수 없음

  18. 18

    네이티브 ajax를 사용하여 PHP 세션 변수에 Javascript 함수 출력 할당 [JQuery 없음 및 사용자 작업 없음 (클릭 없음)]

  19. 19

    로컬 스크립트를 사용하여 Ansible의 출력을 처리하는 방법

  20. 20

    Python Selenium을 사용하여 드롭 다운 메뉴를 선택할 때 출력이 없음

  21. 21

    처음 두 조각 셰이더 출력이 다릅니다.

  22. 22

    C ++-io 리디렉션을 사용하여 여러 정수 입력 및 출력

  23. 23

    paramiko를 사용하여 ifconfig 출력을 볼 수 없습니다.

  24. 24

    Spark Streaming을 사용한 후 출력이 없음

  25. 25

    File :: Find 모듈을 사용할 때 출력이 없음

  26. 26

    탐색 모음을 사용하여보기 내에서 기능을 처리 할 수 없음

  27. 27

    powershell을 호출하는 cmd 명령에서 출력이 없음

  28. 28

    EXPLAIN 출력을 사용하여 느린 MySQL 쿼리 최적화

  29. 29

    C ++ "putchar"를 사용하여 바이너리로 단어 출력

뜨겁다태그

보관