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.
17 lines
836 B
17 lines
836 B
|
|
#define MAX_REPROJECTION_DISTANCE 0.1
|
|
#define MAX_PIXEL_TOLERANCE 4
|
|
#define PROJECTION_EPSILON 0.000001
|
|
|
|
float ComputeMaxReprojectionWorldRadius(float3 positionWS, float3 normalWS, float pixelSpreadAngleTangent, float maxDistance, float pixelTolerance)
|
|
{
|
|
const float3 viewWS = GetWorldSpaceNormalizeViewDir(positionWS);
|
|
float parallelPixelFootPrint = pixelSpreadAngleTangent * length(positionWS);
|
|
float realPixelFootPrint = parallelPixelFootPrint / max(abs(dot(normalWS, viewWS)), PROJECTION_EPSILON);
|
|
return max(maxDistance, realPixelFootPrint * pixelTolerance);
|
|
}
|
|
|
|
float ComputeMaxReprojectionWorldRadius(float3 positionWS, float3 normalWS, float pixelSpreadAngleTangent)
|
|
{
|
|
return ComputeMaxReprojectionWorldRadius(positionWS, normalWS, pixelSpreadAngleTangent, MAX_REPROJECTION_DISTANCE, MAX_PIXEL_TOLERANCE);
|
|
}
|