S:BSSRDF结果
Rd: BSSRDF的漫反射
Fr:: 菲涅尔反射
Ft: 菲涅尔透明度，透射比
Fdr: 菲涅尔漫反射的反射率
E:辐照方向
Phi:每单位表面受到的辐照能
Sigma A: 吸收率
Sigma S: 散射率
Sigma T: 消散率
Sigma T’ : 减少消散率
Sigma TR : 有效消散率
D:漫反射常量
Alpha: 反射率
P:相函数
Eta:反射的相关指数
g:散射角的平均cos值
Q:源分布值
Q0:第0个源分布
Q1:第1个源分布

漫反射近似

		<span style="font-size:14px;">float Lri(float3 w_P, float phi_x, float p_L_Dist, float D)
{
float _Sigma_t = _Sigma_A + _Sigma_S;
float L = 1 / (4 * PIE) * phi_x + 3 / (4 * PIE) * dot(w_P, -D*_Nabla * phi_x);

float Lri = L * pow(E, -_Sigma_t* p_L_Dist);
return Lri;
}</span>

			for (int i = 0; i < 30; i++)
{
w_P = normalize(float3(N.x + rand(fixed2(i*0.05, i*0.05)), N.y + rand(fixed2(-i*0.05, i*0.05)), N.z + rand(fixed2(i*0.05, -i*0.05))));
//	float3 w_P = normalize(float3(lightDir.x + rand(i.uv_MainTex + fixed2(i*0.01, i*0.01)), lightDir.y + rand(i.uv_MainTex + fixed2(-i*0.01, i*0.01)), lightDir.z + rand(i.uv_MainTex + fixed2(i*0.01, -i*0.01))));

Q += phase(dot(lightDir, w_P))*Lri(w_P, phi_x, p_L_Dist, D);
Q *= _Sigma_S;
Q1 += Q*w_P;

}

30次随机光线散射方向

Sigma参数之间的互相推倒，

漫反射的反射部分

Dr = ||x - xr||为当前点与光源的距离
Dv = ||x-xv||为当前点与眼睛（相机）的距离
			if (_WorldSpaceLightPos0.w != 0)
{
p_L_Dist = distance(_WorldSpaceLightPos0, i.worldPos);
}
float v_C_Dist = distance(_WorldSpaceCameraPos, i.worldPos)*0.3;

Φ为光源强度

<span style="font-size:14px;">float3 ref = -D * (dot(N, _Nabla*phi_x_S)) / (diff*_LumPow_D);</span>

参数调节

1.    A Practical Model for Subsurface Light Transport

2.  A Measurement-Based Skin Reﬂectance Model for Face Rendering and Editing

----- by wolf96 http://blog.csdn.net/wolf96

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120