Hey to all,
I was wondering if there is any way you could move the Specular Highlight additively from the light Vector for a Schlick?
An example of what I mean:

The white is the object, the Grey is the traditional spec from the Light Vector position. I would like to achieve something like Yellow, in which I essentially 'compress' or tighten the term.
Any tips? Cheers!
Replies
"standard", it's
You might try to divide that last bit by a value, to get a 'roll off'
Here's a Kelemen Szirmay-Kalos brdf/specular w/ schlick
float Specular( float3 V, float3 N, float3 L, float4 eccentricity, float rollOff, float4 weight ) { float spec = 0; float cosne = dot( V, N ); float cosln = dot( N, L ); if( cosln > 0 ) { float3 h = L + V; float3 H = normalize( h ); float coseh = dot( H, V ); float cosnh = dot( H, N ); float cosnhPow2 = cosnh * cosnh; float ta = sqrt( 1 - cosnhPow2 ) / cosnh; float cosnhPow4 = cosnhPow2*cosnhPow2; float4 eccPow2 = eccentricity * eccentricity; float4 pH = exp( -( ta * ta ) / ( eccPow2 ) ) / ( eccPow2 * cosnhPow4 ); // This Schlick Fresnel is a bit different than a standard Schlick imo... float cosehPow = pow( 1 - coseh, 5.0 ); float Ff = cosehPow + ( 1 - cosehPow ) / rollOff; // Rolloff might be what you need ;) float4 specCoeff = max ( ( pH * Ff ) / dot( h, h ), 0 ); spec = saturate( cosln ) * dot( specCoeff, weight ); } return spec; }- - - -
i wonder if you want behaviour like this?
i think that's just using a szirmay-kalos geometry/masking term ( dot(L+V,L+V) ).
I tried sampling the May-Kalo shader and it's terms, but none of them seem to behave the way that way.