mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0030575: Tests - v3d/materials unstable image screenshots of alpha-blending on GeForce with MSAA
testdiff now looks for "IMAGE_COLOR_TOLERANCE: Tol" statements in log to execute diffimage with -toleranceOfColor Tol parameter. Image difference is first performed with 0 tolerance and then optionally with non-zero tolerance, so that the log always includes information that some images are different, but with two different messages: - "IMAGE differs" for images failed comparison; - "IMAGE is similar" for images passed comparison only with non-zero tolerance. v3d/materials - disabled MSAA and removed duplicate. demo/samples/materials - compare screenshots with 0.8% color tolerance (2/255).
This commit is contained in:
parent
6072d5975a
commit
f2b42160f4
@ -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
|
||||
|
@ -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 <dir1>/diffimage-<dir2>.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 "<html><head><title>Diff $dir1 vs. $dir2</title></head><body>"
|
||||
puts $fd "<h1>Comparison of test results:</h1>"
|
||||
puts $fd "<h2>Version A - $dir1</h2>"
|
||||
puts $fd "<h2>Version B - $dir2</h2>"
|
||||
puts $fd "<h2>Version A \[NEW\] - $dir1</h2>"
|
||||
puts $fd "<h2>Version B \[REF\] - $dir2</h2>"
|
||||
|
||||
# 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 "<table><tr><td bgcolor=\"[expr $value > 0 ? \"ff8080\" : \"lightgreen\"]\">$line</td></tr></table>"
|
||||
} 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 "<table><tr><td bgcolor=\"orange\"><a href=\"[_make_url $file [file join $dir1 $gridpath $aCaseName.html]]\">$line</a></td></tr></table>"
|
||||
} 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 "<table><tr><th><abbr title=\"$dir1\">Version A</abbr></th><th><abbr title=\"$dir2\">Version B</abbr></th><th>Diff (click to toggle)</th></tr>"
|
||||
puts $fd "<tr><td>$img1</td><td>$img2</td><td>$imgd</td></tr></table>"
|
||||
} else {
|
||||
puts $fd $line
|
||||
}
|
||||
}
|
||||
puts $fd "</pre></body></html>"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
8
tests/v3d/materials/phong1
Normal file
8
tests/v3d/materials/phong1
Normal file
@ -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
|
8
tests/v3d/materials/raytrace1
Normal file
8
tests/v3d/materials/raytrace1
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user