Pārlūkot izejas kodu

Reviewed shaders_deferred_render (#4676)

Fixed: g-buffer textures binding
Fixed: Clearing screen with white would leak onto g-buffer textures
Reviewed comments
pull/4680/head
veins1 pirms 1 nedēļas
committed by GitHub
vecāks
revīzija
08b089f620
Šim parakstam datu bāzē netika atrasta zināma atslēga GPG atslēgas ID: B5690EEEBB952194
1 mainītis faili ar 17 papildinājumiem un 17 dzēšanām
  1. +17
    -17
      examples/shaders/shaders_deferred_render.c

+ 17
- 17
examples/shaders/shaders_deferred_render.c Parādīt failu

@ -134,14 +134,15 @@ int main(void)
}
// Now we initialize the sampler2D uniform's in the deferred shader.
// We do this by setting the uniform's value to the color channel slot we earlier
// bound our textures to.
// We do this by setting the uniform's values to the texture units that
// we later bind our g-buffer textures to.
rlEnableShader(deferredShader.id);
rlSetUniformSampler(rlGetLocationUniform(deferredShader.id, "gPosition"), 0);
rlSetUniformSampler(rlGetLocationUniform(deferredShader.id, "gNormal"), 1);
rlSetUniformSampler(rlGetLocationUniform(deferredShader.id, "gAlbedoSpec"), 2);
int texUnitPosition = 0;
int texUnitNormal = 1;
int texUnitAlbedoSpec = 2;
SetShaderValue(deferredShader, rlGetLocationUniform(deferredShader.id, "gPosition"), &texUnitPosition, RL_SHADER_UNIFORM_SAMPLER2D);
SetShaderValue(deferredShader, rlGetLocationUniform(deferredShader.id, "gNormal"), &texUnitNormal, RL_SHADER_UNIFORM_SAMPLER2D);
SetShaderValue(deferredShader, rlGetLocationUniform(deferredShader.id, "gAlbedoSpec"), &texUnitAlbedoSpec, RL_SHADER_UNIFORM_SAMPLER2D);
rlDisableShader();
// Assign out lighting shader to model
@ -208,11 +209,10 @@ int main(void)
// Draw
// ---------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
// Draw to the geometry buffer by first activating it
rlEnableFramebuffer(gBuffer.framebuffer);
rlClearColor(0, 0, 0, 0);
rlClearScreenBuffers(); // Clear color and depth buffer
rlDisableColorBlend();
@ -246,14 +246,14 @@ int main(void)
BeginMode3D(camera);
rlDisableColorBlend();
rlEnableShader(deferredShader.id);
// Activate our g-buffer textures
// These will now be bound to the sampler2D uniforms `gPosition`, `gNormal`,
// Bind our g-buffer textures
// We are binding them to locations that we earlier set in sampler2D uniforms `gPosition`, `gNormal`,
// and `gAlbedoSpec`
rlActiveTextureSlot(mi">0);
rlActiveTextureSlot(n">texUnitPosition);
rlEnableTexture(gBuffer.positionTexture);
rlActiveTextureSlot(mi">1);
rlActiveTextureSlot(n">texUnitNormal);
rlEnableTexture(gBuffer.normalTexture);
rlActiveTextureSlot(mi">2);
rlActiveTextureSlot(n">texUnitAlbedoSpec);
rlEnableTexture(gBuffer.albedoSpecTexture);
// Finally, we draw a fullscreen quad to our default framebuffer
@ -269,8 +269,8 @@ int main(void)
rlBlitFramebuffer(0, 0, screenWidth, screenHeight, 0, 0, screenWidth, screenHeight, 0x00000100); // GL_DEPTH_BUFFER_BIT
rlDisableFramebuffer();
// Since our shader is now done and disabled, we can draw our lights in default
// forward rendering
// Since our shader is now done and disabled, we can draw spheres
// that represent light positions in default forward rendering
BeginMode3D(camera);
rlEnableShader(rlGetShaderIdDefault());
for(int i = 0; i < MAX_LIGHTS; i++)

Notiek ielāde…
Atcelt
Saglabāt