reduced vs-ps parameters

This commit is contained in:
Turánszki János
2025-01-29 08:52:12 +01:00
parent 098e7b52fb
commit 45b2ff31ae
3 changed files with 32 additions and 33 deletions
+1 -1
View File
@@ -598,7 +598,7 @@ struct PrimitiveID
primitiveIndex = 0;
instanceIndex = 0;
subsetIndex = 0;
maybe_clustered = 0;
maybe_clustered = false;
}
// These packing methods require meshlet data, and pack into 32 bits:
+30 -31
View File
@@ -284,22 +284,14 @@ struct PixelInput
float clip : SV_ClipDistance0;
#endif // OBJECTSHADER_USE_CLIPPLANE
#if defined(OBJECTSHADER_USE_INSTANCEINDEX) || defined(OBJECTSHADER_USE_DITHERING)
uint instanceIndex_dither : INSTANCEINDEX_DITHER;
#endif // OBJECTSHADER_USE_INSTANCEINDEX || OBJECTSHADER_USE_DITHERING
#ifdef OBJECTSHADER_USE_CAMERAINDEX
uint cameraIndex : CAMERAINDEX;
#endif // OBJECTSHADER_USE_CAMERAINDEX
#if defined(OBJECTSHADER_USE_INSTANCEINDEX) || defined(OBJECTSHADER_USE_DITHERING) || defined(OBJECTSHADER_USE_CAMERAINDEX)
uint poi : INSTANCEPOINTER;
#endif // OBJECTSHADER_USE_INSTANCEINDEX || OBJECTSHADER_USE_DITHERING || OBJECTSHADER_USE_CAMERAINDEX
#ifdef OBJECTSHADER_USE_UVSETS
float4 uvsets : UVSETS;
#endif // OBJECTSHADER_USE_UVSETS
#ifdef OBJECTSHADER_USE_COLOR
half4 color : COLOR;
#endif // OBJECTSHADER_USE_COLOR
#ifdef OBJECTSHADER_USE_TANGENT
float4 tan : TANGENT;
#endif // OBJECTSHADER_USE_TANGENT
@@ -309,10 +301,14 @@ struct PixelInput
#endif // OBJECTSHADER_USE_NORMAL
#ifdef OBJECTSHADER_USE_COMMON
float2 atl : ATLAS;
half2 ao_wet : COMMON;
float2 atl : ATLAS;
#endif // OBJECTSHADER_USE_COMMON
#ifdef OBJECTSHADER_USE_COLOR
half4 color : COLOR;
#endif // OBJECTSHADER_USE_COLOR
#ifndef OBJECTSHADER_COMPILE_MS
#ifdef OBJECTSHADER_USE_RENDERTARGETARRAYINDEX
uint RTIndex : SV_RenderTargetArrayIndex;
@@ -328,16 +324,29 @@ struct PixelInput
#ifdef OBJECTSHADER_USE_INSTANCEINDEX
inline uint GetInstanceIndex()
{
return instanceIndex_dither & 0xFFFFFF;
ShaderMeshInstancePointer pointer;
pointer.data = poi;
return pointer.GetInstanceIndex();
}
#endif // OBJECTSHADER_USE_INSTANCEINDEX
#ifdef OBJECTSHADER_USE_DITHERING
inline half GetDither()
{
return half((instanceIndex_dither >> 24u) / 255.0);
ShaderMeshInstancePointer pointer;
pointer.data = poi;
return pointer.GetDither();
}
#endif // OBJECTSHADER_USE_DITHERING
#ifdef OBJECTSHADER_USE_CAMERAINDEX
inline uint GetCameraIndex()
{
ShaderMeshInstancePointer pointer;
pointer.data = poi;
return pointer.GetCameraIndex();
}
#endif // OBJECTSHADER_USE_CAMERAINDEX
#ifdef OBJECTSHADER_USE_UVSETS
inline float4 GetUVSets()
@@ -349,7 +358,7 @@ struct PixelInput
inline float3 GetPos3D()
{
#ifdef OBJECTSHADER_USE_CAMERAINDEX
ShaderCamera camera = GetCamera(cameraIndex);
ShaderCamera camera = GetCamera(GetCameraIndex());
#else
ShaderCamera camera = GetCamera();
#endif // OBJECTSHADER_USE_CAMERAINDEX
@@ -360,7 +369,7 @@ struct PixelInput
inline float3 GetViewVector()
{
#ifdef OBJECTSHADER_USE_CAMERAINDEX
ShaderCamera camera = GetCamera(cameraIndex);
ShaderCamera camera = GetCamera(GetCameraIndex());
#else
ShaderCamera camera = GetCamera();
#endif // OBJECTSHADER_USE_CAMERAINDEX
@@ -394,19 +403,9 @@ PixelInput vertex_to_pixel_export(VertexInput input)
Out.clip = dot(surface.position, camera.clip_plane);
#endif // OBJECTSHADER_USE_CLIPPLANE
#if defined(OBJECTSHADER_USE_INSTANCEINDEX) || defined(OBJECTSHADER_USE_DITHERING)
Out.instanceIndex_dither = 0;
#ifdef OBJECTSHADER_USE_INSTANCEINDEX
Out.instanceIndex_dither |= input.GetInstancePointer().GetInstanceIndex() & 0xFFFFFF;
#endif // OBJECTSHADER_USE_INSTANCEINDEX
#ifdef OBJECTSHADER_USE_DITHERING
Out.instanceIndex_dither |= (uint(surface.color.a * 255u) & 0xFF) << 24u;
#endif // OBJECTSHADER_USE_DITHERING
#endif // OBJECTSHADER_USE_INSTANCEINDEX || OBJECTSHADER_USE_DITHERING
#ifdef OBJECTSHADER_USE_CAMERAINDEX
Out.cameraIndex = cameraIndex;
#endif // OBJECTSHADER_USE_CAMERAINDEX
#if defined(OBJECTSHADER_USE_INSTANCEINDEX) || defined(OBJECTSHADER_USE_DITHERING) || defined(OBJECTSHADER_USE_CAMERAINDEX)
Out.poi = input.GetInstancePointer().data;
#endif // OBJECTSHADER_USE_INSTANCEINDEX || OBJECTSHADER_USE_DITHERING || OBJECTSHADER_USE_CAMERAINDEX
#ifdef OBJECTSHADER_USE_COLOR
Out.color = surface.color;
@@ -500,7 +499,7 @@ float4 main(PixelInput input, in bool is_frontface : SV_IsFrontFace APPEND_COVER
// Pixel shader base:
{
#ifdef OBJECTSHADER_USE_CAMERAINDEX
ShaderCamera camera = GetCamera(input.cameraIndex);
ShaderCamera camera = GetCamera(input.GetCameraIndex());
#else
ShaderCamera camera = GetCamera();
#endif // OBJECTSHADER_USE_CAMERAINDEX
@@ -528,7 +527,7 @@ float4 main(PixelInput input, in bool is_frontface : SV_IsFrontFace APPEND_COVER
#ifndef ENVMAPRENDERING
#ifdef OBJECTSHADER_USE_DITHERING
// apply dithering:
clip(dither(pixel + GetTemporalAASampleRotation()) - (1 - input.GetDither()));
clip(dither(pixel + GetTemporalAASampleRotation()) - input.GetDither());
#endif // OBJECTSHADER_USE_DITHERING
#endif // DISABLE_ALPHATEST
#endif // TRANSPARENT
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wi::version
// minor features, major updates, breaking compatibility changes
const int minor = 71;
// minor bug fixes, alterations, refactors, updates
const int revision = 666;
const int revision = 667;
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);