mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #10234 from Kelebek1/clouds_depth
Fix Tears of the Kingdom flickering clouds and depths geometry.
This commit is contained in:
		@@ -339,9 +339,7 @@ Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, Id vertex) {
 | 
			
		||||
        if (ctx.profile.support_vertex_instance_id) {
 | 
			
		||||
            return ctx.OpBitcast(ctx.F32[1], ctx.OpLoad(ctx.U32[1], ctx.vertex_id));
 | 
			
		||||
        } else {
 | 
			
		||||
            const Id index{ctx.OpLoad(ctx.U32[1], ctx.vertex_index)};
 | 
			
		||||
            const Id base{ctx.OpLoad(ctx.U32[1], ctx.base_vertex)};
 | 
			
		||||
            return ctx.OpBitcast(ctx.F32[1], ctx.OpISub(ctx.U32[1], index, base));
 | 
			
		||||
            return ctx.OpBitcast(ctx.F32[1], ctx.OpLoad(ctx.U32[1], ctx.vertex_index));
 | 
			
		||||
        }
 | 
			
		||||
    case IR::Attribute::BaseInstance:
 | 
			
		||||
        return ctx.OpBitcast(ctx.F32[1], ctx.OpLoad(ctx.U32[1], ctx.base_instance));
 | 
			
		||||
@@ -386,9 +384,7 @@ Id EmitGetAttributeU32(EmitContext& ctx, IR::Attribute attr, Id) {
 | 
			
		||||
        if (ctx.profile.support_vertex_instance_id) {
 | 
			
		||||
            return ctx.OpLoad(ctx.U32[1], ctx.vertex_id);
 | 
			
		||||
        } else {
 | 
			
		||||
            const Id index{ctx.OpLoad(ctx.U32[1], ctx.vertex_index)};
 | 
			
		||||
            const Id base{ctx.OpLoad(ctx.U32[1], ctx.base_vertex)};
 | 
			
		||||
            return ctx.OpISub(ctx.U32[1], index, base);
 | 
			
		||||
            return ctx.OpLoad(ctx.U32[1], ctx.vertex_index);
 | 
			
		||||
        }
 | 
			
		||||
    case IR::Attribute::BaseInstance:
 | 
			
		||||
        return ctx.OpLoad(ctx.U32[1], ctx.base_instance);
 | 
			
		||||
 
 | 
			
		||||
@@ -102,12 +102,7 @@ void Impl(TranslatorVisitor& v, u64 insn, bool is_bindless) {
 | 
			
		||||
        }
 | 
			
		||||
        IR::F32 value{v.ir.CompositeExtract(sample, element)};
 | 
			
		||||
        if (element < 2) {
 | 
			
		||||
            IR::U32 casted_value;
 | 
			
		||||
            if (element == 0) {
 | 
			
		||||
                casted_value = v.ir.ConvertFToU(32, value);
 | 
			
		||||
            } else {
 | 
			
		||||
                casted_value = v.ir.ConvertFToS(16, value);
 | 
			
		||||
            }
 | 
			
		||||
            IR::U32 casted_value = v.ir.ConvertFToU(32, value);
 | 
			
		||||
            v.X(dest_reg, v.ir.ShiftLeftLogical(casted_value, v.ir.Imm32(8)));
 | 
			
		||||
        } else {
 | 
			
		||||
            v.F(dest_reg, value);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user