我一直在研究应用程序的光学机制,并使漫射光(环境和方向)工作得很好,但镜面反射光会产生一些奇怪的效果。就好像它会消除周围条纹中的漫反射光。
这是镜面光计算。
function download-dropbox($Url, $FilePath) {
$wc = New-Object system.net.webclient
$req = [System.Net.HttpWebRequest]::Create($Url)
$req.CookieContainer = New-Object System.Net.CookieContainer
$res = $req.GetResponse()
$cookies = $res.Cookies | % { $_.ToString()}
$cookies = $cookies -join '; '
$wc.Headers.Add([System.Net.HttpRequestHeader]::Cookie, $cookies)
$newurl = $url + '?dl=1'
mkdir (Split-Path $FilePath) -force -ea 0 | out-null
$wc.downloadFile($newurl, $tempFile)
}
然后整体灯光计算功能返回此值。
vec3 directionToEye = normalize(u_eyePos - position);
vec3 reflectDirection = normalize(reflect(direction, normal));
float specularFactor = dot(directionToEye, reflectDirection);
specularFactor = pow(specularFactor, u_specularExponent);
if(specularFactor > 0.0){
specularColor = vec4(base.color, 1.0) * u_specularIntensity * specularFactor;
}
在main()函数中,我只是将它们相乘。
return diffuseColor + specularColor;
它们都是vec4值。
以下是没有(1。)和WITH(2。)的屏幕截图:
编辑:通过将pow函数放在if语句中来修复问题。我基本上忘记了我必须检查点积是否> 0,不是pow功能。这是更新的代码。
gl_FragColor = baseColor * textureColor * returnedValueOfTheLightCalcFunction;
答案 0 :(得分:0)
两件事: