add game&rawdata

This commit is contained in:
Vasily Petrov 2026-06-17 23:06:51 +03:00
parent 0133cd976c
commit 49b34b5546
45731 changed files with 709831 additions and 0 deletions

117
gamedata/shaders/r3/lod.ps Normal file
View file

@ -0,0 +1,117 @@
#if ( defined(MSAA_ALPHATEST_DX10_1_ATOC) || defined(MSAA_ALPHATEST_DX10_1) )
#define EXTEND_F_DEFFER
#endif
#include "common.h"
#include "sload.h"
struct vf
{
float3 position : TEXCOORD0;
float2 tc0 : TEXCOORD1; // base0
float2 tc1 : TEXCOORD2; // base1
float4 af : COLOR1; // alpha&factor
float4 hpos : SV_Position;
};
void sample_Textures( inout float4 D, inout float4 H, float2 tc1, float2 tc0, float4 af, float2 pixeloffset )
{
float2 ddx_tc0 = ddx( tc0 );
float2 ddy_tc0 = ddy( tc0 );
float2 ddx_tc1 = ddx( tc1 );
float2 ddy_tc1 = ddy( tc1 );
float4 D1 = s_base.Sample( smp_base, tc1 + pixeloffset.x * ddx_tc1 + pixeloffset.y * ddy_tc1 );
float4 D0 = s_base.Sample( smp_base, tc0 + pixeloffset.x * ddx_tc0 + pixeloffset.y * ddy_tc0 );
float4 H0 = s_hemi.Sample( smp_linear, tc0 + pixeloffset.x * ddx_tc0 + pixeloffset.y * ddy_tc0 ); H0.xyz = H0.rgb*2-1; // expand
float4 H1 = s_hemi.Sample( smp_linear, tc1 + pixeloffset.x * ddx_tc1 + pixeloffset.y * ddy_tc1 ); H1.xyz = H1.rgb*2-1; // expand
D = lerp (D0,D1,af.w); D.w *= af.z; // multiply alpha
H = lerp (H0,H1,af.w); H.w *= af.x; // multiply hemi
}
#ifdef ATOC
float4 main ( vf I ) : SV_Target
{
float4 D;
float4 H;
sample_Textures(D, H, I.tc1, I.tc0, I.af, float2(0,0) );
D.w = (D.w-(96.h/255.h)*0.5)/(1-(96.h/255.h)*0.5);
return D.w;
}
#else // ATOC
#ifdef MSAA_ALPHATEST_DX10_1_ATOC
f_deffer main ( vf I, float4 pos2d : SV_Position )
#else // MSAA_ALPHATEST_DX10_1_ATOC
f_deffer main ( vf I )
#endif // MSAA_ALPHATEST_DX10_1_ATOC
{
f_deffer O;
// 1. Base texture + kill pixels with low alpha
// float4 D0 = tex2D (s_base, I.tc0);
// float4 D1 = tex2D (s_base, I.tc1);
// float4 H0 = tex2D (s_hemi, I.tc0); H0.xyz = H0.rgb*2-1; // expand
// float4 H1 = tex2D (s_hemi, I.tc1); H1.xyz = H1.rgb*2-1; // expand
float4 D;
float4 H;
#if !defined(MSAA_ALPHATEST_DX10_1)
sample_Textures(D, H, I.tc1, I.tc0, I.af, float2(0,0));
#if !( defined(MSAA_ALPHATEST_DX10_1_ATOC) || defined(MSAA_ALPHATEST_DX10_0_ATOC) )
clip (D.w-(96.h/255.h)) ;
#endif // !( defined(MSAA_ALPHATEST_DX10_1_ATOC) || defined(MSAA_ALPHATEST_DX10_1_ATOC) )
#ifdef MSAA_ALPHATEST_DX10_1_ATOC
float alpha = (D.w-(96.h/255.h)*0.5)/(1-(96.h/255.h)*0.5);
uint mask = alpha_to_coverage ( alpha, pos2d );
#endif // MSAA_ALPHATEST_DX10_1_ATOC
#else
uint mask = 0x0;
float2 pixeloffset = MSAAOffsets[0]*(1.0/16.0);
sample_Textures(D, H, I.tc1, I.tc0, I.af, pixeloffset );
if( D.w-(96.h/255.h) >= 0 ) mask |= 0x1;
[unroll] for( int i = 1; i < MSAA_SAMPLES; ++i )
{
float4 DI;
float4 HI;
pixeloffset = MSAAOffsets[i]*(1.0/16.0);
sample_Textures(DI, HI, I.tc1, I.tc0, I.af, pixeloffset );
if( DI.w-(96.h/255.h) >= 0 ) mask |= ( uint(0x1) << i );
}
if( mask == 0x0 )
discard;
#endif
float3 N = normalize (H.xyz);
// D.xyz = float3(1,0,0);
// 2. Standart output
#ifndef EXTEND_F_DEFFER
O = pack_gbuffer(
float4 (N , H.w ),
float4 (I.position + N*def_virtualh/2.h , 0 ),
float4 (D.x, D.y, D.z , def_gloss ) ); // OUT: rgb.gloss
#else
O = pack_gbuffer(
float4 (N , H.w ),
float4 (I.position + N*def_virtualh/2.h , 0 ),
float4 (D.x, D.y, D.z , def_gloss ),
mask ); // OUT: rgb.gloss
#endif
return O;
}
#endif // ATOC