Branimir Karadžić 8 years ago
parent
commit
c18dcadfc6
1 changed files with 83 additions and 80 deletions
  1. 83 80
      examples/14-shadowvolumes/shadowvolumes.cpp

+ 83 - 80
examples/14-shadowvolumes/shadowvolumes.cpp

@@ -1868,7 +1868,6 @@ class ExampleShadowVolumes : public entry::AppI
 {
 	void init(int _argc, char** _argv) BX_OVERRIDE
 	{
-
 		Args args(_argc, _argv);
 
 		m_viewState = ViewState(1280, 720);
@@ -2081,7 +2080,7 @@ class ExampleShadowVolumes : public entry::AppI
 
 			// Respond properly on resize.
 			if (m_oldWidth  != m_viewState.m_width
-				||  m_oldHeight != m_viewState.m_height)
+			||  m_oldHeight != m_viewState.m_height)
 			{
 				m_oldWidth  = m_viewState.m_width;
 				m_oldHeight = m_viewState.m_height;
@@ -2129,15 +2128,16 @@ class ExampleShadowVolumes : public entry::AppI
 				bx::mtxProj(m_viewState.m_proj, fov, aspect, nearPlane, farPlane, s_oglNdc);
 			}
 
-			imguiBeginFrame(m_mouseState.m_mx
-							, m_mouseState.m_my
-							, (m_mouseState.m_buttons[entry::MouseButton::Left  ] ? IMGUI_MBUT_LEFT   : 0)
-							| (m_mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT  : 0)
-							| (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0)
-							, m_mouseState.m_mz
-							, uint16_t(m_viewState.m_width)
-							, uint16_t(m_viewState.m_height)
-							);
+			imguiBeginFrame(
+				   m_mouseState.m_mx
+				,  m_mouseState.m_my
+				, (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0)
+				| (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0)
+				| (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0)
+				,  m_mouseState.m_mz
+				, uint16_t(m_viewState.m_width)
+				, uint16_t(m_viewState.m_height)
+				);
 
 			ImGui::SetNextWindowPos(ImVec2(m_viewState.m_width - 256.0f, 10.0f) );
 			ImGui::Begin("Settings"
@@ -2163,9 +2163,7 @@ class ExampleShadowVolumes : public entry::AppI
 			}
 
 			ImGui::SliderInt("Lights", &m_settings_numLights, 1, MAX_LIGHTS_COUNT);
-
 			ImGui::Checkbox("Update lights", &m_settings_updateLights);
-
 			ImGui::Indent();
 			
 			if (ImGui::RadioButton("Light pattern 0", LightPattern0 == m_lightPattern) )
@@ -2243,15 +2241,17 @@ class ExampleShadowVolumes : public entry::AppI
 
 			ImGui::End();
 
-			ImGui::SetNextWindowPos(ImVec2(10, m_viewState.m_height - 77 - 10) );
+			ImGui::SetNextWindowPos(ImVec2(10, float(m_viewState.m_height) - 77.0f - 10.0f) );
 			ImGui::Begin("Show help:"
-						 , NULL
-						 , ImVec2(120.0f, 77.0f)
-						 , ImGuiWindowFlags_AlwaysAutoResize
-						 );
+				, NULL
+				, ImVec2(120.0f, 77.0f)
+				, ImGuiWindowFlags_AlwaysAutoResize
+				);
 			
-			if ( ImGui::Button(m_settings_showHelp ? "ON" : "OFF") )
+			if (ImGui::Button(m_settings_showHelp ? "ON" : "OFF") )
+			{
 				m_settings_showHelp = !m_settings_showHelp;
+			}
 
 			ImGui::End();
 			
@@ -2537,13 +2537,13 @@ class ExampleShadowVolumes : public entry::AppI
 
 			// Make sure at the beginning everything gets cleared.
 			bgfx::setViewClear(0
-							   , BGFX_CLEAR_COLOR
-							   | BGFX_CLEAR_DEPTH
-							   | BGFX_CLEAR_STENCIL
-							   , m_clearValues.m_clearRgba
-							   , m_clearValues.m_clearDepth
-							   , m_clearValues.m_clearStencil
-							   );
+				, BGFX_CLEAR_COLOR
+				| BGFX_CLEAR_DEPTH
+				| BGFX_CLEAR_STENCIL
+				, m_clearValues.m_clearRgba
+				, m_clearValues.m_clearDepth
+				, m_clearValues.m_clearStencil
+				);
 
 			::touch(0);
 
@@ -2555,9 +2555,10 @@ class ExampleShadowVolumes : public entry::AppI
 			s_uniforms.m_color[1] = 1.0f;
 			s_uniforms.m_color[2] = 1.0f;
 
-			const RenderState& drawAmbient = (m_settings_useStencilTexture ?
-											  s_renderStates[RenderState::ShadowVolume_UsingStencilTexture_DrawAmbient]:
-											  s_renderStates[RenderState::ShadowVolume_UsingStencilBuffer_DrawAmbient]);
+			const RenderState& drawAmbient = m_settings_useStencilTexture
+				? s_renderStates[RenderState::ShadowVolume_UsingStencilTexture_DrawAmbient]
+				: s_renderStates[RenderState::ShadowVolume_UsingStencilBuffer_DrawAmbient]
+				;
 
 			// Draw shadow casters.
 			for (uint8_t ii = 0; ii < shadowCastersCount[m_currentScene]; ++ii)
@@ -2601,7 +2602,7 @@ class ExampleShadowVolumes : public entry::AppI
 			{
 				const float* lightPos = lightPosRadius[ii];
 
-				bx::memCopy(s_uniforms.m_lightPosRadius, lightPosRadius[ii], 4*sizeof(float) );
+				bx::memCopy(s_uniforms.m_lightPosRadius, lightPosRadius[ii],   4*sizeof(float) );
 				bx::memCopy(s_uniforms.m_lightRgbInnerR, m_lightRgbInnerR[ii], 3*sizeof(float) );
 				bx::memCopy(s_uniforms.m_color,          m_lightRgbInnerR[ii], 3*sizeof(float) );
 
@@ -2610,11 +2611,11 @@ class ExampleShadowVolumes : public entry::AppI
 					bgfx::setViewFrameBuffer(viewId, s_stencilFb);
 
 					bgfx::setViewClear(viewId
-									   , BGFX_CLEAR_COLOR
-									   , 0x00000000
-									   , 1.0f
-									   , 0
-									   );
+						, BGFX_CLEAR_COLOR
+						, 0x00000000
+						, 1.0f
+						, 0
+						);
 				}
 				else
 				{
@@ -2622,11 +2623,11 @@ class ExampleShadowVolumes : public entry::AppI
 					bgfx::setViewFrameBuffer(viewId, invalid);
 
 					bgfx::setViewClear(viewId
-									   , BGFX_CLEAR_STENCIL
-									   , m_clearValues.m_clearRgba
-									   , m_clearValues.m_clearDepth
-									   , m_clearValues.m_clearStencil
-									   );
+						, BGFX_CLEAR_STENCIL
+						, m_clearValues.m_clearRgba
+						, m_clearValues.m_clearDepth
+						, m_clearValues.m_clearStencil
+						);
 				}
 
 				// Create near clip volume for current light.
@@ -2658,11 +2659,11 @@ class ExampleShadowVolumes : public entry::AppI
 					// Compute virtual light position for shadow volume generation.
 					float transformedLightPos[3];
 					shadowVolumeLightTransform(transformedLightPos
-											   , instance.m_scale
-											   , instance.m_rotation
-											   , instance.m_pos
-											   , lightPos
-											   );
+						, instance.m_scale
+						, instance.m_rotation
+						, instance.m_pos
+						, lightPos
+						);
 
 					// Set virtual light pos.
 					bx::memCopy(s_uniforms.m_virtualLightPos_extrusionDist, transformedLightPos, 3*sizeof(float) );
@@ -2671,16 +2672,16 @@ class ExampleShadowVolumes : public entry::AppI
 					// Compute transform for shadow volume.
 					float shadowVolumeMtx[16];
 					bx::mtxSRT(shadowVolumeMtx
-							   , instance.m_scale[0]
-							   , instance.m_scale[1]
-							   , instance.m_scale[2]
-							   , instance.m_rotation[0]
-							   , instance.m_rotation[1]
-							   , instance.m_rotation[2]
-							   , instance.m_pos[0]
-							   , instance.m_pos[1]
-							   , instance.m_pos[2]
-							   );
+						, instance.m_scale[0]
+						, instance.m_scale[1]
+						, instance.m_scale[2]
+						, instance.m_rotation[0]
+						, instance.m_rotation[1]
+						, instance.m_rotation[2]
+						, instance.m_pos[0]
+						, instance.m_pos[1]
+						, instance.m_pos[2]
+						);
 
 					GroupArray& groups = model->m_mesh.m_groups;
 					const uint16_t stride = model->m_mesh.m_decl.getStride();
@@ -2691,14 +2692,14 @@ class ExampleShadowVolumes : public entry::AppI
 						// Create shadow volume.
 						ShadowVolume shadowVolume;
 						shadowVolumeCreate(shadowVolume
-										   , group
-										   , stride
-										   , shadowVolumeMtx
-										   , transformedLightPos
-										   , shadowVolumeImpl
-										   , m_settings_shadowVolumeAlgorithm
-										   , m_settings_useStencilTexture
-										   );
+							, group
+							, stride
+							, shadowVolumeMtx
+							, transformedLightPos
+							, shadowVolumeImpl
+							, m_settings_shadowVolumeAlgorithm
+							, m_settings_useStencilTexture
+							);
 
 						m_numShadowVolumeVertices += shadowVolume.m_numVertices;
 						m_numShadowVolumeIndices += shadowVolume.m_numIndices;
@@ -2708,21 +2709,21 @@ class ExampleShadowVolumes : public entry::AppI
 						if (m_settings_useStencilTexture)
 						{
 							renderStateIndex = ShadowVolumeImpl::DepthFail == shadowVolumeImpl
-							? RenderState::ShadowVolume_UsingStencilTexture_CraftStencil_DepthFail
-							: RenderState::ShadowVolume_UsingStencilTexture_CraftStencil_DepthPass
-							;
+								? RenderState::ShadowVolume_UsingStencilTexture_CraftStencil_DepthFail
+								: RenderState::ShadowVolume_UsingStencilTexture_CraftStencil_DepthPass
+								;
 
 							programIndex = ShadowVolumeAlgorithm::FaceBased == m_settings_shadowVolumeAlgorithm
-							? ShadowVolumeProgramType::Tex1
-							: ShadowVolumeProgramType::Tex2
-							;
+								? ShadowVolumeProgramType::Tex1
+								: ShadowVolumeProgramType::Tex2
+								;
 						}
 						else
 						{
 							renderStateIndex = ShadowVolumeImpl::DepthFail == shadowVolumeImpl
-							? RenderState::ShadowVolume_UsingStencilBuffer_CraftStencil_DepthFail
-							: RenderState::ShadowVolume_UsingStencilBuffer_CraftStencil_DepthPass
-							;
+								? RenderState::ShadowVolume_UsingStencilBuffer_CraftStencil_DepthFail
+								: RenderState::ShadowVolume_UsingStencilBuffer_CraftStencil_DepthPass
+								;
 						}
 						const RenderState& renderStateCraftStencil = s_renderStates[renderStateIndex];
 
@@ -2786,9 +2787,9 @@ class ExampleShadowVolumes : public entry::AppI
 				s_uniforms.m_params.m_lightingPass = 1.0f;
 
 				RenderState& drawDiffuse = m_settings_useStencilTexture
-				? s_renderStates[RenderState::ShadowVolume_UsingStencilTexture_DrawDiffuse]
-				: s_renderStates[RenderState::ShadowVolume_UsingStencilBuffer_DrawDiffuse]
-				;
+					? s_renderStates[RenderState::ShadowVolume_UsingStencilTexture_DrawDiffuse]
+					: s_renderStates[RenderState::ShadowVolume_UsingStencilBuffer_DrawDiffuse]
+					;
 
 				// If using stencil texture, viewId is set to render target. Incr it to render to default back buffer.
 				viewId += uint8_t(m_settings_useStencilTexture);
@@ -2834,13 +2835,15 @@ class ExampleShadowVolumes : public entry::AppI
 
 			// Reset clear values.
 			setViewClearMask(UINT32_MAX
-							 , BGFX_CLEAR_NONE
-							 , m_clearValues.m_clearRgba
-							 , m_clearValues.m_clearDepth
-							 , m_clearValues.m_clearStencil
-							 );
+				, BGFX_CLEAR_NONE
+				, m_clearValues.m_clearRgba
+				, m_clearValues.m_clearDepth
+				, m_clearValues.m_clearStencil
+				);
+
 			return true;
 		}
+
 		return false;
 	}