Browse Source

bloom场景 添加模糊

master
blobt 4 years ago
parent
commit
47803259ee
  1. BIN
      .vs/shader3/v14/.suo
  2. 27
      main.cpp

BIN
.vs/shader3/v14/.suo

27
main.cpp

@ -90,6 +90,15 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
hdrProgram.DetectAttribute("texcoord");
hdrProgram.DetectUniform("U_MainTexture");
//¸ß˹ģºý
GPUProgram gaussianProgram;
gaussianProgram.AttachShader(GL_VERTEX_SHADER, "res/shader/fullscreenquad.vs");
gaussianProgram.AttachShader(GL_FRAGMENT_SHADER, "res/shader/fullscreenquad_gaussian.fs");
gaussianProgram.Link();
gaussianProgram.DetectAttribute("pos");
gaussianProgram.DetectAttribute("texcoord");
gaussianProgram.DetectUniform("U_MainTexture");
//combine program
GPUProgram combineProgram;
combineProgram.AttachShader(GL_VERTEX_SHADER, "res/shader/fullscreenquad.vs");
@ -188,7 +197,6 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
FBO fbo;
fbo.AttachColorBuffer("color", GL_COLOR_ATTACHMENT0, GL_RGBA, viewportWidth, viewportHeight);
fbo.AttachDepthBuffer("depth", viewportWidth, viewportHeight);
fbo.Finish();
FBO HDRfbo;
HDRfbo.AttachColorBuffer("color", GL_COLOR_ATTACHMENT0, GL_RGBA, viewportWidth, viewportHeight);
@ -252,8 +260,16 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
glUseProgram(0);
HDRfbo.Unbind();
glFlush();
fbo.Bind();
glUseProgram(gaussianProgram.mProgram);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, HDRfbo.GetBuffer("hdrcolor"));
glUniform1i(gaussianProgram.GetLocation("U_MainTexture"), 0);
fsq.Draw(gaussianProgram.GetLocation("pos"), gaussianProgram.GetLocation("texcoord"));
fbo.Unbind();
glFlush();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glActiveTexture(GL_TEXTURE0);
@ -267,10 +283,15 @@ INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
glUniform1i(hdrProgram.GetLocation("U_MainTexture"), 0);
fsq.DrawToRightTop(hdrProgram.GetLocation("pos"), hdrProgram.GetLocation("texcoord"));
glUseProgram(gaussianProgram.mProgram);
glBindTexture(GL_TEXTURE_2D, fbo.GetBuffer("color"));
glUniform1i(gaussianProgram.GetLocation("U_MainTexture"), 0);
fsq.DrawToLeftBottom(gaussianProgram.GetLocation("pos"), gaussianProgram.GetLocation("texcoord"));
glUseProgram(combineProgram.mProgram);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, HDRfbo.GetBuffer("color"));
glUniform1i(combineProgram.GetLocation("U_MainTexture"), 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, HDRfbo.GetBuffer("hdrcolor"));
glUniform1i(combineProgram.GetLocation("U_HDRTexture"), 1);

Loading…
Cancel
Save