Files
cocos-engine/editor/assets/chunks/lighting.chunk
2022-03-15 14:31:41 +08:00

35 lines
1.2 KiB
Plaintext

// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
#pragma define CC_PIPELINE_TYPE_FORWARD 0
#pragma define CC_PIPELINE_TYPE_DEFERRED 1
#pragma define-meta CC_PIPELINE_TYPE range([0, 1])
#pragma define-meta CC_FORCE_FORWARD_SHADING
#include <cc-forward-light>
float SmoothDistAtt2 (float distSqr, float invSqrAttRadius) {
float factor = distSqr * invSqrAttRadius; // ^2
float factor2 = factor * factor; // ^4
float factor3 = factor2 * factor2; // ^8
float smoothFactor = clamp(1.0 - factor3 * factor3, 0.0, 1.0);
return smoothFactor * smoothFactor;
}
float SmoothDistAtt (float distSqr, float invSqrAttRadius) {
float factor = distSqr * invSqrAttRadius;
float smoothFactor = clamp(1.0 - factor * factor, 0.0, 1.0);
return smoothFactor * smoothFactor;
}
float GetDistAtt (float distSqr, float invSqrAttRadius) {
float attenuation = 1.0 / max(distSqr, 0.01*0.01);
attenuation *= SmoothDistAtt(distSqr , invSqrAttRadius);
return attenuation;
}
float GetAngleAtt (vec3 L, vec3 litDir, float litAngleScale, float litAngleOffset) {
float cd = dot(litDir, L);
float attenuation = clamp(cd * litAngleScale + litAngleOffset, 0.0, 1.0);
return (attenuation * attenuation);
}