mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #2713 from wwylele/where-is-my-tc0_w
swrasterizer: add missing tc0_w attribute processing
This commit is contained in:
		
						commit
						d2bb0a6f2d
					
				@ -69,13 +69,14 @@ static void InitScreenCoordinates(Vertex& vtx) {
 | 
				
			|||||||
    viewport.offset_y = float24::FromFloat32(static_cast<float>(regs.rasterizer.viewport_corner.y));
 | 
					    viewport.offset_y = float24::FromFloat32(static_cast<float>(regs.rasterizer.viewport_corner.y));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float24 inv_w = float24::FromFloat32(1.f) / vtx.pos.w;
 | 
					    float24 inv_w = float24::FromFloat32(1.f) / vtx.pos.w;
 | 
				
			||||||
    vtx.color *= inv_w;
 | 
					    vtx.pos.w = inv_w;
 | 
				
			||||||
    vtx.view *= inv_w;
 | 
					 | 
				
			||||||
    vtx.quat *= inv_w;
 | 
					    vtx.quat *= inv_w;
 | 
				
			||||||
 | 
					    vtx.color *= inv_w;
 | 
				
			||||||
    vtx.tc0 *= inv_w;
 | 
					    vtx.tc0 *= inv_w;
 | 
				
			||||||
    vtx.tc1 *= inv_w;
 | 
					    vtx.tc1 *= inv_w;
 | 
				
			||||||
 | 
					    vtx.tc0_w *= inv_w;
 | 
				
			||||||
 | 
					    vtx.view *= inv_w;
 | 
				
			||||||
    vtx.tc2 *= inv_w;
 | 
					    vtx.tc2 *= inv_w;
 | 
				
			||||||
    vtx.pos.w = inv_w;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    vtx.screenpos[0] =
 | 
					    vtx.screenpos[0] =
 | 
				
			||||||
        (vtx.pos.x * inv_w + float24::FromFloat32(1.0)) * viewport.halfsize_x + viewport.offset_x;
 | 
					        (vtx.pos.x * inv_w + float24::FromFloat32(1.0)) * viewport.halfsize_x + viewport.offset_x;
 | 
				
			||||||
 | 
				
			|||||||
@ -23,13 +23,15 @@ struct Vertex : Shader::OutputVertex {
 | 
				
			|||||||
        pos = pos * factor + vtx.pos * (float24::FromFloat32(1) - factor);
 | 
					        pos = pos * factor + vtx.pos * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // TODO: Should perform perspective correct interpolation here...
 | 
					        // TODO: Should perform perspective correct interpolation here...
 | 
				
			||||||
 | 
					        quat = quat * factor + vtx.quat * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					        color = color * factor + vtx.color * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
        tc0 = tc0 * factor + vtx.tc0 * (float24::FromFloat32(1) - factor);
 | 
					        tc0 = tc0 * factor + vtx.tc0 * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
        tc1 = tc1 * factor + vtx.tc1 * (float24::FromFloat32(1) - factor);
 | 
					        tc1 = tc1 * factor + vtx.tc1 * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					        tc0_w = tc0_w * factor + vtx.tc0_w * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					        view = view * factor + vtx.view * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
        tc2 = tc2 * factor + vtx.tc2 * (float24::FromFloat32(1) - factor);
 | 
					        tc2 = tc2 * factor + vtx.tc2 * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        screenpos = screenpos * factor + vtx.screenpos * (float24::FromFloat32(1) - factor);
 | 
					        screenpos = screenpos * factor + vtx.screenpos * (float24::FromFloat32(1) - factor);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        color = color * factor + vtx.color * (float24::FromFloat32(1) - factor);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Linear interpolation
 | 
					    // Linear interpolation
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user