Panagiotis Christopoulos Charitos 3 years ago
parent
commit
ede819a3b7

+ 5 - 1
AnKi/Core/NativeWindowSdl.cpp

@@ -96,12 +96,16 @@ Error NativeWindowSdl::init(const NativeWindowInitInfo& init)
 	{
 	{
 #if ANKI_OS_WINDOWS
 #if ANKI_OS_WINDOWS
 		flags |= SDL_WINDOW_FULLSCREEN;
 		flags |= SDL_WINDOW_FULLSCREEN;
-#endif
 
 
 		if(init.m_exclusiveFullscreen)
 		if(init.m_exclusiveFullscreen)
 		{
 		{
 			flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
 			flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
 		}
 		}
+#elif ANKI_OS_LINUX
+		flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
+#else
+#	error See file
+#endif
 
 
 		// Alter the window size
 		// Alter the window size
 		SDL_DisplayMode mode;
 		SDL_DisplayMode mode;

+ 12 - 5
AnKi/Renderer/IndirectDiffuse.cpp

@@ -47,13 +47,16 @@ Error IndirectDiffuse::initInternal()
 	texInit.setName("IndirectDiffuse #2");
 	texInit.setName("IndirectDiffuse #2");
 	m_rts[1] = m_r->createAndClearRenderTarget(texInit, TextureUsageBit::ALL_SAMPLED);
 	m_rts[1] = m_r->createAndClearRenderTarget(texInit, TextureUsageBit::ALL_SAMPLED);
 
 
-	// Init VRS SRI generation
-	const Bool enableVrs = getGrManager().getDeviceCapabilities().m_vrs && getConfig().getRVrs() && !preferCompute;
-	if(enableVrs)
+	if(!preferCompute)
 	{
 	{
 		m_main.m_fbDescr.m_colorAttachmentCount = 1;
 		m_main.m_fbDescr.m_colorAttachmentCount = 1;
 		m_main.m_fbDescr.bake();
 		m_main.m_fbDescr.bake();
+	}
 
 
+	// Init VRS SRI generation
+	const Bool enableVrs = getGrManager().getDeviceCapabilities().m_vrs && getConfig().getRVrs() && !preferCompute;
+	if(enableVrs)
+	{
 		m_vrs.m_sriTexelDimension = getGrManager().getDeviceCapabilities().m_minShadingRateImageTexelSize;
 		m_vrs.m_sriTexelDimension = getGrManager().getDeviceCapabilities().m_minShadingRateImageTexelSize;
 		ANKI_ASSERT(m_vrs.m_sriTexelDimension == 8 || m_vrs.m_sriTexelDimension == 16);
 		ANKI_ASSERT(m_vrs.m_sriTexelDimension == 8 || m_vrs.m_sriTexelDimension == 16);
 
 
@@ -250,7 +253,7 @@ void IndirectDiffuse::populateRenderGraph(RenderingContext& ctx)
 		prpass->newDependency(RenderPassDependency(m_r->getMotionVectors().getHistoryLengthRt(), readUsage));
 		prpass->newDependency(RenderPassDependency(m_r->getMotionVectors().getHistoryLengthRt(), readUsage));
 		prpass->newDependency(RenderPassDependency(m_runCtx.m_mainRtHandles[READ], readUsage));
 		prpass->newDependency(RenderPassDependency(m_runCtx.m_mainRtHandles[READ], readUsage));
 
 
-		prpass->setWork([this, &ctx](RenderPassWorkContext& rgraphCtx) {
+		prpass->setWork([this, &ctx, enableVrs](RenderPassWorkContext& rgraphCtx) {
 			CommandBufferPtr& cmdb = rgraphCtx.m_commandBuffer;
 			CommandBufferPtr& cmdb = rgraphCtx.m_commandBuffer;
 			cmdb->bindShaderProgram(m_main.m_grProg);
 			cmdb->bindShaderProgram(m_main.m_grProg);
 
 
@@ -296,7 +299,11 @@ void IndirectDiffuse::populateRenderGraph(RenderingContext& ctx)
 			else
 			else
 			{
 			{
 				cmdb->setViewport(0, 0, unis.m_viewportSize.x(), unis.m_viewportSize.y());
 				cmdb->setViewport(0, 0, unis.m_viewportSize.x(), unis.m_viewportSize.y());
-				cmdb->setVrsRate(VrsRate::_1x1);
+
+				if(enableVrs)
+				{
+					cmdb->setVrsRate(VrsRate::_1x1);
+				}
 
 
 				cmdb->drawArrays(PrimitiveTopology::TRIANGLES, 3);
 				cmdb->drawArrays(PrimitiveTopology::TRIANGLES, 3);
 			}
 			}

+ 3 - 3
AnKi/Shaders/LightShadingApplyIndirect.ankiprog

@@ -114,9 +114,9 @@ void main()
 
 
 	// Do specular
 	// Do specular
 	const Vec2 ndc = UV_TO_NDC(in_uv);
 	const Vec2 ndc = UV_TO_NDC(in_uv);
-	const Vec4 viewPos4 = u_clusteredShading.m_matrices.m_invertedProjectionJitter * Vec4(ndc, depthCenter, 1.0);
-	const Vec3 viewPos = viewPos4.xyz / viewPos4.w;
-	const ANKI_RP Vec3 viewDir = normalize(-viewPos);
+	const Vec4 worldPos4 = u_clusteredShading.m_matrices.m_invertedViewProjectionJitter * Vec4(ndc, depthCenter, 1.0);
+	const Vec3 worldPos = worldPos4.xyz / worldPos4.w;
+	const ANKI_RP Vec3 viewDir = normalize(u_clusteredShading.m_cameraPosition - worldPos);
 	const F32 NoV = max(0.0, dot(gbuffer.m_normal, viewDir));
 	const F32 NoV = max(0.0, dot(gbuffer.m_normal, viewDir));
 	const Vec3 env = specularDFG(gbuffer.m_f0, gbuffer.m_roughness, u_integrationLut, u_linearAnyClampSampler, NoV);
 	const Vec3 env = specularDFG(gbuffer.m_f0, gbuffer.m_roughness, u_integrationLut, u_linearAnyClampSampler, NoV);
 	specular *= env;
 	specular *= env;