diff --git a/samples/tcl/materials.tcl b/samples/tcl/materials.tcl index cfef461004..c3d4867850 100644 --- a/samples/tcl/materials.tcl +++ b/samples/tcl/materials.tcl @@ -51,7 +51,7 @@ proc drawObjects {theRow theColor} { uplevel #0 box $aBox $aCtr $aCtr $aCtr $aSize $aSize $aSize uplevel #0 ttranslate $aSph $x $y 0 uplevel #0 ttranslate $aBox [expr $x + 10] $y 0 - uplevel #0 vdisplay -noredraw $aSph $aBox + uplevel #0 vdisplay -noredraw -dispMode 1 $aSph $aBox uplevel #0 vsetmaterial -noredraw $aSph $aBox $aMatIter if {$theColor != ""} { uplevel #0 vsetcolor -noredraw $aSph $aBox $theColor @@ -64,21 +64,19 @@ proc drawObjects {theRow theColor} { # setup 3D viewer content pload MODELING VISUALIZATION -catch { vclose View1 } -vinit View1 w=768 h=768 vclear +vclose ALL +vinit View1 w=768 h=768 vtop vglinfo vsetgradientbg 180 200 255 180 180 180 2 vlight -change 0 -dir 0.577 -0.577 -0.577 -vsetdispmode 1 vrenderparams -msaa 8 # adjust scene bounding box box bnd 0 0 0 180 210 1 -vdisplay -noredraw bnd -vsetdispmode bnd 0 +vdisplay -noredraw -dispMode 0 bnd vfit vremove -noredraw bnd @@ -88,5 +86,3 @@ drawObjects 0 "" drawObjects 1 red drawObjects 2 green drawObjects 3 blue1 -#vfit -vzfit diff --git a/src/DrawResources/TestCommands.tcl b/src/DrawResources/TestCommands.tcl index 4d0f849042..1669f17cf4 100644 --- a/src/DrawResources/TestCommands.tcl +++ b/src/DrawResources/TestCommands.tcl @@ -718,6 +718,7 @@ help testdiff { Compare results of two executions of tests (CPU times, ...) Use: testdiff dir1 dir2 [groupname [gridname]] [options...] Where dir1 and dir2 are directories containing logs of two test runs. + dir1 (A) should point to NEW tests results to be verified and dir2 (B) to REFERENCE results. Allowed options are: -image [filename]: compare only images and save its in specified file (default name is /diffimage-.log) @@ -2215,6 +2216,8 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log # check images if {$image != false || ($image == false && $cpu == false && $memory == false)} { + set aCaseDiffColorTol 0 + if { [regexp {IMAGE_COLOR_TOLERANCE:\s*([\d.]+)} $log1 res1 imgtol1] } { set aCaseDiffColorTol $imgtol1 } set imglist1 [glob -directory $path1 -types f -tails -nocomplain ${casename}.{png,gif} ${casename}-*.{png,gif} ${casename}_*.{png,gif}] set imglist2 [glob -directory $path2 -types f -tails -nocomplain ${casename}.{png,gif} ${casename}-*.{png,gif} ${casename}_*.{png,gif}] _list_diff $imglist1 $imglist2 imgin1 imgin2 imgcommon @@ -2239,7 +2242,7 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log set diffile [_diff_img_name $dir1 $dir2 $basename $imgfile] if { [catch {diffimage [file join $dir1 $basename $imgfile] \ [file join $dir2 $basename $imgfile] \ - 0 0 0 $diffile} diff] } { + -toleranceOfColor 0.0 -blackWhite off -borderFilter off $diffile} diff] } { if {$image != false} { _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile cannot be compared" } else { @@ -2247,10 +2250,35 @@ proc _test_diff {dir1 dir2 basename image cpu memory status verbose _logvar _log } file delete -force $diffile ;# clean possible previous result of diffimage } elseif { $diff != 0 } { + set diff [string trimright $diff \n] + if {$aCaseDiffColorTol != 0} { + # retry with color tolerance + if { [catch {diffimage [file join $dir1 $basename $imgfile] \ + [file join $dir2 $basename $imgfile] \ + -toleranceOfColor $aCaseDiffColorTol -blackWhite off -borderFilter off $diffile} diff2] } { + if {$image != false} { + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile cannot be compared" + } else { + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile cannot be compared" + } + continue + } elseif { $diff2 == 0 } { + # exclude image diff within tolerance but still keep info in the log + set toLogImageCase false + file delete -force $diffile + if {$image != false} { + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile is similar \[$diff different pixels\]" + } else { + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile is similar \[$diff different pixels\]" + } + continue + } + } + if {$image != false} { - _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile differs" + _log_and_puts log_image "IMAGE [split $basename /] $casename: $imgfile differs \[$diff different pixels\]" } else { - _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile differs" + _log_and_puts log "IMAGE [split $basename /] $casename: $imgfile differs \[$diff different pixels\]" } } else { file delete -force $diffile ;# clean useless artifact of diffimage @@ -2311,8 +2339,8 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { # print header puts $fd "Diff $dir1 vs. $dir2" puts $fd "

Comparison of test results:

" - puts $fd "

Version A - $dir1

" - puts $fd "

Version B - $dir2

" + puts $fd "

Version A \[NEW\] - $dir1

" + puts $fd "

Version B \[REF\] - $dir2

" # add script for switching between images on click puts $fd "" @@ -2334,12 +2362,16 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { if { [regexp "\[\\\[](\[0-9.e+-]+)%\[\]]" $line res value] && [expr abs($value)] > ${highlight_percent} } { puts $fd "
0 ? \"ff8080\" : \"lightgreen\"]\">$line
" - } else { + } elseif { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+) is similar} $line res case img] } { + if { [catch {eval file join "" [lrange $case 0 end-1]} gridpath] } { + # note: special handler for the case if test grid directoried are compared directly + set gridpath "" + } + set aCaseName [lindex $case end] + puts $fd "
$line
" + } elseif { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+)} $line res case img] } { + # add images puts $fd $line - } - - # add images - if { [regexp {IMAGE[ \t]+([^:]+):[ \t]+([A-Za-z0-9_.-]+)} $line res case img] } { if { [catch {eval file join "" [lrange $case 0 end-1]} gridpath] } { # note: special handler for the case if test grid directoried are compared directly set gridpath "" @@ -2360,6 +2392,8 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} { puts $fd "" puts $fd "
Version AVersion BDiff (click to toggle)
$img1$img2$imgd
" + } else { + puts $fd $line } } puts $fd "" diff --git a/tests/demo/samples/materials b/tests/demo/samples/materials index 197389c00d..cdabd0ea6d 100644 --- a/tests/demo/samples/materials +++ b/tests/demo/samples/materials @@ -1,4 +1,8 @@ -# test for visual properties of materials in 3d viewer +puts "Test visual properties of materials in 3d viewer" + +puts "Workaround instability on GeForce cards with MSAA at semitransparent sphere" +puts "IMAGE_COLOR_TOLERANCE: 0.008" + source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl # make a snapshot diff --git a/tests/v3d/materials/bug24855 b/tests/v3d/materials/bug24855 index 77300fcb31..937c011f5d 100644 --- a/tests/v3d/materials/bug24855 +++ b/tests/v3d/materials/bug24855 @@ -1,5 +1,5 @@ puts "========" -puts "OCC24855: Revision of parameters of standard materials" +puts "0024855: Revision of parameters of standard materials" puts "========" # custom shapes @@ -14,8 +14,7 @@ vsetgradientbg 180 200 255 180 180 180 2 # display shape vlight -change 0 -dir 0.577 -0.577 -0.577 restore $aShape s -vsetdispmode 1 -vdisplay s +vdisplay -dispMode 1 s vfit proc testmat {dirname filename} { @@ -25,18 +24,15 @@ proc testmat {dirname filename} { } } -# make material screenshots +# material screenshots, Gouraud shading model (rasterization) +vrenderparams -shadingModel GOURAUD testmat $imagedir $casename -vshaderprog s phong +# material screenshots, Phong shading model (rasterization) +vrenderparams -shadingModel PHONG testmat $imagedir ${casename}_phong +# material screenshots, Ray-Tracing vrenderparams -raytrace -reflections -fsaa vtextureenv on 5 - testmat $imagedir ${casename}_rt - -vclear -vrenderparams -rasterization -vtextureenv off -source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl diff --git a/tests/v3d/materials/bug24872_1 b/tests/v3d/materials/bug24872_1 deleted file mode 100644 index 9b5d29c183..0000000000 --- a/tests/v3d/materials/bug24872_1 +++ /dev/null @@ -1,10 +0,0 @@ -puts "=========" -puts "OCC24872" -puts "=========" -puts "" -########################################################### -# Support of emission color in Phong shader and ray-tracing -########################################################### - -source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl -vshaderprog phong diff --git a/tests/v3d/materials/bug24872_2 b/tests/v3d/materials/bug24872_2 deleted file mode 100644 index 8f3624c7fe..0000000000 --- a/tests/v3d/materials/bug24872_2 +++ /dev/null @@ -1,10 +0,0 @@ -puts "=========" -puts "OCC24872" -puts "=========" -puts "" -########################################################### -# Support of emission color in Phong shader and ray-tracing -########################################################### - -source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl -vrenderparams -raytrace diff --git a/tests/v3d/materials/phong1 b/tests/v3d/materials/phong1 new file mode 100644 index 0000000000..5d4900f76a --- /dev/null +++ b/tests/v3d/materials/phong1 @@ -0,0 +1,8 @@ +puts "=========" +puts "0024872: Support of emission color in Phong shader and ray-tracing" +puts "Test emission material within Phong rasterization model" +puts "=========" +puts "" + +source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl +vrenderparams -shadingModel PHONG -msaa 0 diff --git a/tests/v3d/materials/raytrace1 b/tests/v3d/materials/raytrace1 new file mode 100644 index 0000000000..fa2f2de930 --- /dev/null +++ b/tests/v3d/materials/raytrace1 @@ -0,0 +1,8 @@ +puts "=========" +puts "0024872: Support of emission color in Phong shader and ray-tracing" +puts "Test emission material within Ray-Tracing" +puts "=========" +puts "" + +source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl +vrenderparams -raytrace -msaa 0