*/}}
فهرست منبع

pow fix (why???)

YimingWu 1 هفته پیش
والد
کامیت
6b7f3aa742
1فایلهای تغییر یافته به همراه2 افزوده شده و 2 حذف شده
  1. 2 2
      ourshader.cpp

+ 2 - 2
ourshader.cpp

@@ -810,7 +810,7 @@ PigmentData PigmentMix(PigmentData p0, PigmentData p1, float factor){
 }
 }
 PigmentData PigmentOver(PigmentData p0, PigmentData p1){
 PigmentData PigmentOver(PigmentData p0, PigmentData p1){
     PigmentData result=p1; float mfac=1.0;//p0.r[15];
     PigmentData result=p1; float mfac=1.0;//p0.r[15];
-    float rfac=p0.r[15]; result.a[15]=mix(result.a[15],0.,safepow(rfac,2.));
+    float rfac=p0.r[15]; result.a[15]=mix(result.a[15],0.,rfac*rfac);
     PigmentOverSlices(p0.r,result.r);
     PigmentOverSlices(p0.r,result.r);
     PigmentMultiplySlicesInverted(p0.a,result.a,mfac);
     PigmentMultiplySlicesInverted(p0.a,result.a,mfac);
 
 
@@ -862,7 +862,7 @@ vec3 Spectral2XYZ(float spec[OUR_SPECTRAL_SLICES]){
 
 
 vec3 PigmentToRGB(PigmentData pd, PigmentData light){
 vec3 PigmentToRGB(PigmentData pd, PigmentData light){
     float slices[OUR_SPECTRAL_SLICES];
     float slices[OUR_SPECTRAL_SLICES];
-    for(int i=0;i<OUR_SPECTRAL_SLICES-1;i++){
+    for(int i=0;i<OUR_SPECTRAL_SLICES;i++){
         if(pd.a[15]!=0.0){ // apparently intel iGPUs need this
         if(pd.a[15]!=0.0){ // apparently intel iGPUs need this
             float absfac=1.0f-pd.a[i]*pow(pd.a[15],1.); if(absfac<0.)absfac=0.; slices[i]=pd.r[i]*absfac;
             float absfac=1.0f-pd.a[i]*pow(pd.a[15],1.); if(absfac<0.)absfac=0.; slices[i]=pd.r[i]*absfac;
         }else{
         }else{