0024872: Support of emission color in Phong shader and ray-tracing
authorduv <duv@opencascade.com>
Thu, 24 Jul 2014 08:56:42 +0000 (12:56 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 24 Jul 2014 08:59:19 +0000 (12:59 +0400)
Test cases for issue CR24872

src/Shaders/PhongShading.fs
src/Shaders/RaytraceBase.fs
tests/v3d/materials/bug24872_1 [new file with mode: 0644]
tests/v3d/materials/bug24872_2 [new file with mode: 0644]

index 30ccaa6..bdcd58c 100755 (executable)
@@ -165,9 +165,11 @@ vec4 computeLighting (in vec3 theNormal,
   vec4 aMaterialAmbient  = gl_FrontFacing ? occFrontMaterial_Ambient()  : occBackMaterial_Ambient();
   vec4 aMaterialDiffuse  = gl_FrontFacing ? occFrontMaterial_Diffuse()  : occBackMaterial_Diffuse();
   vec4 aMaterialSpecular = gl_FrontFacing ? occFrontMaterial_Specular() : occBackMaterial_Specular();
+  vec4 aMaterialEmission = gl_FrontFacing ? occFrontMaterial_Emission() : occBackMaterial_Emission();
   return vec4 (Ambient,  1.0) * aMaterialAmbient
        + vec4 (Diffuse,  1.0) * aMaterialDiffuse
-       + vec4 (Specular, 1.0) * aMaterialSpecular;
+       + vec4 (Specular, 1.0) * aMaterialSpecular
+                              + aMaterialEmission;
 }
 
 //! Entry point to the Fragment Shader
index ce6c1bc..1b860c3 100644 (file)
@@ -916,7 +916,9 @@ vec4 Radiance (in SRay theRay, in vec3 theInverse)
       uRaytraceMaterialTexture, MATERIAL_SPEC (aTriIndex.w));
     vec4 aOpacity  = texelFetch (
       uRaytraceMaterialTexture, MATERIAL_TRAN (aTriIndex.w));
-      
+    vec3 aEmission = texelFetch (
+      uRaytraceMaterialTexture, MATERIAL_EMIS (aTriIndex.w)).rgb;
+    
     vec3 aNormal = SmoothNormal (aHit.UV, aTriIndex);
 
     vec4 aInvTransf0 = texelFetch (uSceneTransformTexture, anObjectId * 4 + 0);
@@ -980,6 +982,8 @@ vec4 Radiance (in SRay theRay, in vec3 theInverse)
     
     aResult.xyz += aWeight.xyz * uGlobalAmbient.xyz *
       aAmbient * aOpacity.x * max (abs (dot (aNormal, theRay.Direct)), 0.5f);
+
+    aResult.xyz += aWeight.xyz * aOpacity.x * aEmission;
     
     if (aOpacity.x != 1.0f)
     {
diff --git a/tests/v3d/materials/bug24872_1 b/tests/v3d/materials/bug24872_1
new file mode 100644 (file)
index 0000000..20ce1d0
--- /dev/null
@@ -0,0 +1,10 @@
+puts "========="
+puts "OCC24872"
+puts "========="
+puts ""
+###########################################################
+# Support of emission color in Phong shader and ray-tracing
+###########################################################
+
+source $env(CASROOT)/samples/tcl/materials.tcl
+vshaderprog phong
diff --git a/tests/v3d/materials/bug24872_2 b/tests/v3d/materials/bug24872_2
new file mode 100644 (file)
index 0000000..26ccadd
--- /dev/null
@@ -0,0 +1,10 @@
+puts "========="
+puts "OCC24872"
+puts "========="
+puts ""
+###########################################################
+# Support of emission color in Phong shader and ray-tracing
+###########################################################
+
+source $env(CASROOT)/samples/tcl/materials.tcl
+vrenderparams -raytrace