소스 검색

18-ibl fixes. (#824)

* Fixing issue #817.

* Fixing env matrix for IBL.
Dario 9 년 전
부모
커밋
c9a84bd542
2개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 2 2
      examples/18-ibl/fs_ibl_mesh.sc
  2. 3 1
      examples/18-ibl/ibl.cpp

+ 2 - 2
examples/18-ibl/fs_ibl_mesh.sc

@@ -98,8 +98,8 @@ void main()
 	vec3 cubeN = normalize(instMul(mtx, vec4(nn, 0.0)).xyz);
 	cubeR = fixCubeLookup(cubeR, mip, 256.0);
 
-	vec3 radiance   = u_doDiffuseIbl  * envSpec * toLinear(textureCubeLod(s_texCube, cubeR, mip).xyz);
-	vec3 irradiance = u_doSpecularIbl * envDiff * toLinear(textureCube(s_texCubeIrr, cubeN).xyz);
+	vec3 radiance   = u_doSpecularIbl * envSpec * toLinear(textureCubeLod(s_texCube, cubeR, mip).xyz);
+	vec3 irradiance = u_doDiffuseIbl  * envDiff * toLinear(textureCube(s_texCubeIrr, cubeN).xyz);
 	vec3 indirect = radiance + irradiance;
 
 	// Color.

+ 3 - 1
examples/18-ibl/ibl.cpp

@@ -731,7 +731,7 @@ int _main_(int _argc, char** _argv)
 		camera.envViewMtx(mtxEnvView);
 		float mtxEnvRot[16];
 		bx::mtxRotateY(mtxEnvRot, settings.m_envRotCurr);
-		bx::mtxMul(uniforms.m_mtx, mtxEnvView, mtxEnvRot);
+		bx::mtxMul(uniforms.m_mtx, mtxEnvView, mtxEnvRot); // Used for Skybox.
 
 		// Submit view 0.
 		bgfx::setTexture(0, s_texCube, lightProbes[currentLightProbe].m_tex);
@@ -742,6 +742,7 @@ int _main_(int _argc, char** _argv)
 		bgfx::submit(0, programSky);
 
 		// Submit view 1.
+		memcpy(uniforms.m_mtx, mtxEnvRot, 16*sizeof(float)); // Used for IBL.
 		if (0 == settings.m_meshSelection)
 		{
 			// Submit bunny.
@@ -749,6 +750,7 @@ int _main_(int _argc, char** _argv)
 			bx::mtxSRT(mtx, 1.0f, 1.0f, 1.0f, 0.0f, bx::pi, 0.0f, 0.0f, -0.80f, 0.0f);
 			bgfx::setTexture(0, s_texCube,    lightProbes[currentLightProbe].m_tex);
 			bgfx::setTexture(1, s_texCubeIrr, lightProbes[currentLightProbe].m_texIrr);
+			uniforms.submit();
 			meshSubmit(meshBunny, 1, programMesh, mtx);
 		}
 		else