You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
4.6 KiB
164 lines
4.6 KiB
|
|
#ifndef UNIVERSAL_DEBUGGING_COMMON_INCLUDED |
|
#define UNIVERSAL_DEBUGGING_COMMON_INCLUDED |
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/DebugViewEnums.cs.hlsl" |
|
|
|
#if defined(DEBUG_DISPLAY) |
|
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" |
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Debug.hlsl" |
|
|
|
// Material settings... |
|
int _DebugMaterialMode; |
|
int _DebugVertexAttributeMode; |
|
int _DebugMaterialValidationMode; |
|
|
|
// Rendering settings... |
|
int _DebugFullScreenMode; |
|
int _DebugSceneOverrideMode; |
|
int _DebugMipInfoMode; |
|
int _DebugValidationMode; |
|
|
|
// Lighting settings... |
|
int _DebugLightingMode; |
|
int _DebugLightingFeatureFlags; |
|
|
|
half _DebugValidateAlbedoMinLuminance = 0.01; |
|
half _DebugValidateAlbedoMaxLuminance = 0.90; |
|
half _DebugValidateAlbedoSaturationTolerance = 0.214; |
|
half _DebugValidateAlbedoHueTolerance = 0.104; |
|
half3 _DebugValidateAlbedoCompareColor = half3(0.5, 0.5, 0.5); |
|
|
|
half _DebugValidateMetallicMinValue = 0; |
|
half _DebugValidateMetallicMaxValue = 0.9; |
|
|
|
float4 _DebugColor; |
|
float4 _DebugColorInvalidMode; |
|
float4 _DebugValidateBelowMinThresholdColor; |
|
float4 _DebugValidateAboveMaxThresholdColor; |
|
|
|
half3 GetDebugColor(uint index) |
|
{ |
|
uint clampedIndex = clamp(index, 0, DEBUG_COLORS_COUNT-1); |
|
return kDebugColorGradient[clampedIndex].rgb; |
|
} |
|
|
|
bool TryGetDebugColorInvalidMode(out half4 debugColor) |
|
{ |
|
// Depending upon how we want to deal with invalid modes, this code may need to change, |
|
// for now we'll simply make each pixel use "_DebugColorInvalidMode"... |
|
debugColor = _DebugColorInvalidMode; |
|
return true; |
|
} |
|
|
|
uint GetMipMapLevel(float2 nonNormalizedUVCoordinate) |
|
{ |
|
// The OpenGL Graphics System: A Specification 4.2 |
|
// - chapter 3.9.11, equation 3.21 |
|
|
|
float2 dx_vtc = ddx(nonNormalizedUVCoordinate); |
|
float2 dy_vtc = ddy(nonNormalizedUVCoordinate); |
|
float delta_max_sqr = max(dot(dx_vtc, dx_vtc), dot(dy_vtc, dy_vtc)); |
|
|
|
return (uint)(0.5 * log2(delta_max_sqr)); |
|
} |
|
|
|
bool CalculateValidationAlbedo(half3 albedo, out half4 color) |
|
{ |
|
half luminance = Luminance(albedo); |
|
|
|
if (luminance < _DebugValidateAlbedoMinLuminance) |
|
{ |
|
color = _DebugValidateBelowMinThresholdColor; |
|
} |
|
else if (luminance > _DebugValidateAlbedoMaxLuminance) |
|
{ |
|
color = _DebugValidateAboveMaxThresholdColor; |
|
} |
|
else |
|
{ |
|
half3 hsv = RgbToHsv(albedo); |
|
half hue = hsv.r; |
|
half sat = hsv.g; |
|
|
|
half3 compHSV = RgbToHsv(_DebugValidateAlbedoCompareColor.rgb); |
|
half compHue = compHSV.r; |
|
half compSat = compHSV.g; |
|
|
|
if ((compSat - _DebugValidateAlbedoSaturationTolerance > sat) || ((compHue - _DebugValidateAlbedoHueTolerance > hue) && (compHue - _DebugValidateAlbedoHueTolerance + 1.0 > hue))) |
|
{ |
|
color = _DebugValidateBelowMinThresholdColor; |
|
} |
|
else if ((sat > compSat + _DebugValidateAlbedoSaturationTolerance) || ((hue > compHue + _DebugValidateAlbedoHueTolerance) && (hue > compHue + _DebugValidateAlbedoHueTolerance - 1.0))) |
|
{ |
|
color = _DebugValidateAboveMaxThresholdColor; |
|
} |
|
else |
|
{ |
|
color = half4(luminance, luminance, luminance, 1.0); |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
bool CalculateColorForDebugSceneOverride(out half4 color) |
|
{ |
|
if (_DebugSceneOverrideMode == DEBUGSCENEOVERRIDEMODE_NONE) |
|
{ |
|
color = 0; |
|
return false; |
|
} |
|
else |
|
{ |
|
color = _DebugColor; |
|
return true; |
|
} |
|
} |
|
|
|
#endif |
|
|
|
bool IsAlphaDiscardEnabled() |
|
{ |
|
#if defined(DEBUG_DISPLAY) |
|
return (_DebugSceneOverrideMode == DEBUGSCENEOVERRIDEMODE_NONE); |
|
#else |
|
return true; |
|
#endif |
|
} |
|
|
|
bool IsFogEnabled() |
|
{ |
|
#if defined(DEBUG_DISPLAY) |
|
return (_DebugMaterialMode == DEBUGMATERIALMODE_NONE) && |
|
(_DebugVertexAttributeMode == DEBUGVERTEXATTRIBUTEMODE_NONE) && |
|
(_DebugMaterialValidationMode == DEBUGMATERIALVALIDATIONMODE_NONE) && |
|
(_DebugSceneOverrideMode == DEBUGSCENEOVERRIDEMODE_NONE) && |
|
(_DebugMipInfoMode == DEBUGMIPINFOMODE_NONE) && |
|
(_DebugLightingMode == DEBUGLIGHTINGMODE_NONE) && |
|
(_DebugLightingFeatureFlags == 0) && |
|
(_DebugValidationMode == DEBUGVALIDATIONMODE_NONE); |
|
#else |
|
return true; |
|
#endif |
|
} |
|
|
|
bool IsLightingFeatureEnabled(uint bitMask) |
|
{ |
|
#if defined(DEBUG_DISPLAY) |
|
return (_DebugLightingFeatureFlags == 0) || ((_DebugLightingFeatureFlags & bitMask) != 0); |
|
#else |
|
return true; |
|
#endif |
|
} |
|
|
|
bool IsOnlyAOLightingFeatureEnabled() |
|
{ |
|
#if defined(DEBUG_DISPLAY) |
|
return _DebugLightingFeatureFlags == DEBUGLIGHTINGFEATUREFLAGS_AMBIENT_OCCLUSION; |
|
#else |
|
return false; |
|
#endif |
|
} |
|
|
|
#endif
|
|
|