]> OCCT Git - occt.git/commitdiff
// reverting removed test cases CR33329
authordpasukhi <dpasukhi@opencascade.com>
Mon, 13 Feb 2023 10:43:59 +0000 (10:43 +0000)
committerdpasukhi <dpasukhi@opencascade.com>
Mon, 13 Feb 2023 18:06:27 +0000 (18:06 +0000)
The possible reason for removing incorrect 3rd party for new compilers (can be a DE part)
 Draco
 QT
Updated local name and some other compiler real time properties (can be a DE part)
Different drivers for used server's hardware ( not DE part )

78 files changed:
tests/boolean/bopfuse_simple/ZP6
tests/bugs/caf/bug114 [new file with mode: 0755]
tests/bugs/caf/bug26293_2 [new file with mode: 0644]
tests/bugs/fclasses/bug24831
tests/bugs/fclasses/bug7287_1
tests/bugs/fclasses/bug7287_5
tests/bugs/fclasses/bug7287_6
tests/bugs/mesh/bug32424 [new file with mode: 0644]
tests/bugs/modalg_1/bug19071
tests/bugs/modalg_5/bug25199
tests/bugs/modalg_6/bug26616 [new file with mode: 0644]
tests/bugs/modalg_6/bug27884
tests/bugs/modalg_7/bug29293_1
tests/bugs/modalg_7/bug29843_1 [new file with mode: 0644]
tests/bugs/moddata_3/bug162
tests/bugs/xde/bug22898
tests/de_mesh/gltf_write/010 [new file with mode: 0644]
tests/de_mesh/gltf_write/Diamond [new file with mode: 0644]
tests/de_mesh/gltf_write/as1draco [new file with mode: 0644]
tests/de_mesh/gltf_write/bearing [new file with mode: 0644]
tests/de_mesh/gltf_write/bull [new file with mode: 0644]
tests/de_mesh/gltf_write/bull_parallel [new file with mode: 0644]
tests/de_mesh/gltf_write/screw [new file with mode: 0644]
tests/de_mesh/gltf_write/soapbox [new file with mode: 0644]
tests/de_mesh/gltf_write/test [new file with mode: 0644]
tests/heal/checkshape/bug32448_10 [new file with mode: 0644]
tests/hlr/poly_hlr/Plate
tests/opengl/data/background/skydome [new file with mode: 0644]
tests/opengl/data/general/bug25679 [new file with mode: 0644]
tests/opengl/data/raytrace/bug25201 [new file with mode: 0644]
tests/opengl/data/raytrace/dof_mono [new file with mode: 0644]
tests/opengl/data/raytrace/dof_stereo [new file with mode: 0644]
tests/opengl/data/raytrace/normal_map [new file with mode: 0644]
tests/opengl/data/raytrace/pbr_spheres [new file with mode: 0644]
tests/opengl/data/raytrace/sample_ball_alpha [new file with mode: 0644]
tests/opengl/data/raytrace/sample_ball_iss [new file with mode: 0644]
tests/opengl/data/raytrace/sample_ball_wood [new file with mode: 0644]
tests/opengl/data/raytrace/sample_cube [new file with mode: 0644]
tests/opengl/data/raytrace/sample_cube_clamp [new file with mode: 0644]
tests/opengl/data/raytrace/sample_cube_twosided [new file with mode: 0644]
tests/opengl/data/raytrace/sample_materials [new file with mode: 0644]
tests/opengl/data/raytrace/tone_mapping [new file with mode: 0644]
tests/opengl/data/shading/pbr_spheres [new file with mode: 0644]
tests/opengl/data/shading/shading_models [new file with mode: 0644]
tests/opengl/data/textures/cubemap_dds [new file with mode: 0644]
tests/opengl/data/textures/cubemap_ibl [new file with mode: 0644]
tests/opengl/data/textures/pbr_tangent_normal [new file with mode: 0644]
tests/opengl/data/transparency/ior [new file with mode: 0644]
tests/perf/fclasses/strtod
tests/tools/begin [new file with mode: 0644]
tests/tools/dfbrowser/A1 [new file with mode: 0644]
tests/tools/dfbrowser/A2 [new file with mode: 0644]
tests/tools/dfbrowser/A3 [new file with mode: 0644]
tests/tools/dfbrowser/A4 [new file with mode: 0644]
tests/tools/dfbrowser/A5 [new file with mode: 0644]
tests/tools/dfbrowser/A6 [new file with mode: 0644]
tests/tools/dfbrowser/A7 [new file with mode: 0644]
tests/tools/dfbrowser/A8 [new file with mode: 0644]
tests/tools/dfbrowser/A9 [new file with mode: 0644]
tests/tools/end [new file with mode: 0644]
tests/tools/grids.list [new file with mode: 0644]
tests/tools/parse.rules [new file with mode: 0644]
tests/tools/shapeview/A1 [new file with mode: 0644]
tests/tools/shapeview/A2 [new file with mode: 0644]
tests/tools/vinspector/A1 [new file with mode: 0644]
tests/tools/vinspector/A2 [new file with mode: 0644]
tests/v3d/bugs/bug25760_2 [new file with mode: 0644]
tests/v3d/bugs/bug25853 [new file with mode: 0644]
tests/v3d/bugs/bug30434 [new file with mode: 0644]
tests/v3d/bugs/bug30437_1 [new file with mode: 0644]
tests/v3d/materials/pbr1 [new file with mode: 0644]
tests/v3d/memory/bug172 [new file with mode: 0644]
tests/v3d/memory/bug26538 [new file with mode: 0644]
tests/v3d/memory/bug29412 [new file with mode: 0644]
tests/v3d/trsf/bug24623_3 [new file with mode: 0644]
tests/v3d/trsf/bug24623_4 [new file with mode: 0644]
tests/v3d/trsf/bug25532 [new file with mode: 0644]
tests/vselect/bugs/bug27318 [new file with mode: 0644]

index 00cb1a188d2c4982d3b1c1c1c839dafdb8956f79..f8b2fb8f4e3b89c6169708083d7fdaf34a5fdd60 100755 (executable)
@@ -3,8 +3,6 @@
 #
 #Create 3 torus
 
-puts "TODO CR33225 Linux: Error : The area of result shape is 138625, expected 197700"
-
 ptorus a0 100 20
 tcopy a0 a1
 tcopy a0 a2
diff --git a/tests/bugs/caf/bug114 b/tests/bugs/caf/bug114
new file mode 100755 (executable)
index 0000000..fafb520
--- /dev/null
@@ -0,0 +1,24 @@
+puts "==========="
+puts "OCC114"
+puts "==========="
+
+# Max number of iterations for computing memory leackage
+set i_max 10
+puts "Amount of iterations is $i_max"
+
+NewDocument D BinOcaf
+UndoLimit D 10
+
+restore [locate_data_file OCC294.brep] s
+
+set listmem {}
+for {set i 1} {${i} <= ${i_max}} {incr i} {
+
+    OpenCommand D
+    SetShape D 0:1 s 
+    AbortCommand D
+
+    # check memory usage (with tolerance equal to half page size)
+    lappend listmem [meminfo h]
+    checktrend $listmem 50 50 "Memory leak detected"
+}
diff --git a/tests/bugs/caf/bug26293_2 b/tests/bugs/caf/bug26293_2
new file mode 100644 (file)
index 0000000..d8b8d9d
--- /dev/null
@@ -0,0 +1,17 @@
+puts "==========="
+puts "OCC26293"
+puts "==========="
+puts ""
+#################################
+# Error opening the document
+#################################
+
+Open [locate_data_file bug26293_all_geom.sgd] D
+vinit
+for {set i 1} {$i < 1065} {incr i} {
+  if { ![catch {GetShape D 0:1:$i:1:1:2 res$i}] } {
+    vdisplay res$i
+  }
+}
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}.png
\ No newline at end of file
index c1269d10b8cce010f0eae0cbfc8b4914e417e3b0..90d6d8de65717a11c6487b829234f775d4273eb6 100644 (file)
@@ -1,5 +1,3 @@
-puts "TODO ?CR33225 Windows: Failed class "
-
 pload QAcommands
 
 QANTestStlIterators
index d6f8107bf09a394f39ecba8b70977bef1a909f74..9c87d5ee3d69e8bdf41a1dbfb150ec2096d3b826 100755 (executable)
@@ -1,4 +1,3 @@
-puts "TODO ?СК33225 Linux: Checking trend failed "
 puts "TODO ?OCC7287 Linux: Tcl Exception: Memory leak detected"
 puts "TODO ?OCC7287 Linux: TEST INCOMPLETE"
 puts "TODO ?OCC7287 MacOS: Tcl Exception: Memory leak detected"
index 7142cffe719ef19ebed1847697ca5efd57b538ac..929094e2da5e53c00849011b0dbf45575c8eb18d 100755 (executable)
@@ -1,4 +1,3 @@
-puts "TODO ?CR332257287 Linux: Checking trend failed: mean delta per step = 9432.0, sigma = 4220.013270121316, expected delta = 0"
 puts "TODO ?OCC7287 Linux: Tcl Exception: Memory leak detected"
 puts "TODO ?OCC7287 Linux: TEST INCOMPLETE"
 puts "TODO ?OCC7287 MacOS: Tcl Exception: Memory leak detected"
index 25588729d32dbf02305ac601d0168408a6fb599e..e40799f71eb3a6672ec1e84807473e7261a806fd 100755 (executable)
@@ -1,4 +1,3 @@
-puts "TODO ?CR33225 Linux: Checking trend failed: mean delta per step = 7408.0, sigma = 2737.917456754312, expected delta = 0"
 puts "TODO ?OCC7287 Linux: Tcl Exception: Memory leak detected"
 puts "TODO ?OCC7287 Linux: TEST INCOMPLETE"
 puts "TODO ?OCC7287 MacOS: Tcl Exception: Memory leak detected"
diff --git a/tests/bugs/mesh/bug32424 b/tests/bugs/mesh/bug32424
new file mode 100644 (file)
index 0000000..deb41d8
--- /dev/null
@@ -0,0 +1,18 @@
+puts "======="
+puts "0032424: Mesh - Slow triangulation of a simple shape."
+puts "======="
+puts ""
+cpulimit 3
+
+restore [locate_data_file bug32424.brep] result
+
+incmesh result 0.17 -a 20
+
+checktrinfo result -tri 2360 -nod 1302
+
+vinit
+vdefaults -autoTriang 0
+vsetdispmode 1
+vdisplay result
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}.png
index 8144c621b4092ceb4afbed1dd238ddd4822cf5ed..5bec0ef2b0ec4987a80278928dbd8e8d946dabf4 100755 (executable)
@@ -1,12 +1,7 @@
-puts "TODO CR33225 Linux: Error : The command is not valid. The area is 0."
-puts "TODO CR33225 Linux: Error : The area of result shape is 0, expected 177462"
-puts "TODO CR33225 Linux: is WRONG because number of "
-
 puts "============"
 puts "OCC19071"
 puts "============"
 puts ""
-
 #######################################################################
 # The MakeFuse or the MakePartition function crash together on 2 torus
 #######################################################################
index 410c4600ef6eda8f2297daee17a4befefdebf0d1..47d968a2230cfb85fa2d0f69a2e3f7fad5901577 100755 (executable)
@@ -1,5 +1,4 @@
 puts "TODO CR30351 Windows: Faulty OCC25199:  Bad tolerance edge generated by blend algorithm"
-puts "TODO CR33225 Linux: Faulty OCC25199:  Bad tolerance edge generated by blend algorithm"
 
 puts "============"
 puts "OCC25199"
diff --git a/tests/bugs/modalg_6/bug26616 b/tests/bugs/modalg_6/bug26616
new file mode 100644 (file)
index 0000000..75391f0
--- /dev/null
@@ -0,0 +1,20 @@
+puts "========"
+puts "OCC26616"
+puts "========"
+puts ""
+############################################
+# Memory leak in IntTools_Context::Hatcher
+############################################
+
+restore [locate_data_file OCC26635_t0.brep] t0
+restore [locate_data_file OCC26635_t1.brep] t1
+
+bfuse res t0 t1
+
+set listmem {}
+for {set i 1} {$i < 10} {incr i} {
+    bfuse res t0 t1
+
+    lappend listmem [meminfo h]
+    checktrend $listmem 0 64 "Memory leak detected"
+}
index 74509b211b8fb0abbb1e9bdfb6d2d1e2a291ef65..e8bf7ec226da60a2a188e18e424da6ff4a053370 100644 (file)
@@ -3,8 +3,6 @@ puts "OCC27884: Modeling Algorithms - Possible improvement for 2d classifier"
 puts "================================================================="
 puts ""
 
-puts "TODO ?CR33225 Windows: Error: algorithm slowed down"
-
 pload ALL
 pload QAcommands
 
index 5d4015de14be34225d408ef7f451c948679dd208..9ff06449e001e6129a4b26157a2a5e33aa98269e 100644 (file)
@@ -1,5 +1,3 @@
-puts "TODO ?CR33225 Windows: extra characters after close-quote "
-
 puts "========"
 puts "OCC29293"
 puts "========"
diff --git a/tests/bugs/modalg_7/bug29843_1 b/tests/bugs/modalg_7/bug29843_1
new file mode 100644 (file)
index 0000000..24e35fe
--- /dev/null
@@ -0,0 +1,48 @@
+puts "========"
+puts "0029843: Modeling Algorithms - Boolean FUSE produces incorrect result"
+puts "========"
+puts ""
+
+restore [locate_data_file bug29843.brep] s
+
+explode s
+bclearobjects
+bcleartools
+baddobjects s_1
+baddtools s_2
+bfillds
+
+bbop r_0 0
+bbop r_1 1
+bbop r_2 2
+bbop r_3 3
+bbop r_4 4
+bbuild r_5
+
+foreach i { 0 1 2 3 4 5} {
+  checkshape r_$i
+  if {![regexp "OK" [bopcheck r_$i]]} {
+    puts "Error: r_$i is self-intersecting shape"
+  }
+}
+
+checkprops r_0 -s 9.84429 -v 0.639311
+checknbshapes r_0 -wire 7 -face 5 -shell 1 -solid 1 -t
+
+checkprops r_1 -s 2121.39 -v 612.41
+checknbshapes r_1 -wire 38 -face 32 -shell 2 -solid 1 -t
+
+checkprops r_2 -s 2113.85 -v 611.569
+checknbshapes r_2 -wire 32 -face 26 -shell 2 -solid 1 -t
+
+checkprops r_3 -s 15.9893 -v 0.215264
+checknbshapes r_3 -wire 11 -face 9 -shell 2 -solid 2 -t
+
+checkprops r_4 -l 24.9725
+checksection r_4 -r 2
+
+checkprops r_5 -s 2139.68 -v 612.402
+checknbshapes r_5 -wire 44 -face 36 -shell 5 -solid 4 -t
+
+checkview -display r_0 -2d -path ${imagedir}/${test_image}.png
+
index 8638698c3470d5f28a8e353af70f59d8f8e102ae..eff2020590764f4194bf682f0e8caee593cdda3b 100644 (file)
@@ -2,9 +2,6 @@ puts "========"
 puts "OCC162"
 puts "========"
 
-puts "TODO ?CR33225 Linux: Checking trend failed "
-puts "TODO ?CR33225 Linux: Tcl Exception: Memory leak detected"
-
 pload QAcommands
 pload XDE
 
index 39e9697788d126db97c627a7d352767b2fa05c5a..a86dbb8a8958918c1f1f98af7f5219b70459e9a6 100644 (file)
@@ -1,5 +1,4 @@
 puts "TODO OCC24156 MacOS: Error: unsupported locale specification"
-puts "TODO CR33225 Linux: Error: unsupported locale specification"
 
 # Test for issue #22898 and other functionality that can be affected by locale.
 # Just run multiple conversions of the shape to and from different formats and 
diff --git a/tests/de_mesh/gltf_write/010 b/tests/de_mesh/gltf_write/010
new file mode 100644 (file)
index 0000000..b9b5d1b
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadGltf D0 [locate_data_file bug32867_010.glb]
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on -mergefaces
+WriteGltf D0 "$aGltfFile2" -draco on
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
diff --git a/tests/de_mesh/gltf_write/Diamond b/tests/de_mesh/gltf_write/Diamond
new file mode 100644 (file)
index 0000000..f020c33
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadGltf D0 [locate_data_file bug32867_Diamond.glb]
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on
+WriteGltf D0 "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
diff --git a/tests/de_mesh/gltf_write/as1draco b/tests/de_mesh/gltf_write/as1draco
new file mode 100644 (file)
index 0000000..f07a25a
--- /dev/null
@@ -0,0 +1,18 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadStep D0 [locate_data_file as1-oc-214-mat.stp]
+XGetOneShape ss D0
+incmesh ss 1.0
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on
+WriteGltf D0 "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
diff --git a/tests/de_mesh/gltf_write/bearing b/tests/de_mesh/gltf_write/bearing
new file mode 100644 (file)
index 0000000..46d8ae6
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+restore [locate_data_file bearing.brep] b
+incmesh b 0.1
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf b "$aGltfFile1" -draco on
+WriteGltf b "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D0 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
diff --git a/tests/de_mesh/gltf_write/bull b/tests/de_mesh/gltf_write/bull
new file mode 100644 (file)
index 0000000..5d7de77
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadGltf D0 [locate_data_file bug32867_bull.glb]
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on
+WriteGltf D0 "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
diff --git a/tests/de_mesh/gltf_write/bull_parallel b/tests/de_mesh/gltf_write/bull_parallel
new file mode 100644 (file)
index 0000000..5e3967b
--- /dev/null
@@ -0,0 +1,13 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadGltf D0 [locate_data_file bug32867_bull.glb]
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on -parallel
+
+ReadGltf D "$aGltfFile1"
diff --git a/tests/de_mesh/gltf_write/screw b/tests/de_mesh/gltf_write/screw
new file mode 100644 (file)
index 0000000..fa7bee5
--- /dev/null
@@ -0,0 +1,18 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadStep D0 [locate_data_file screw.step]
+XGetOneShape ss D0
+incmesh ss 1.0
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on -mergefaces
+WriteGltf D0 "$aGltfFile2" -draco on
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
\ No newline at end of file
diff --git a/tests/de_mesh/gltf_write/soapbox b/tests/de_mesh/gltf_write/soapbox
new file mode 100644 (file)
index 0000000..2ec1901
--- /dev/null
@@ -0,0 +1,17 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+ReadStep D0 [locate_data_file ec_soapbox-A.stp]
+XGetOneShape ss D0
+incmesh ss 1.0
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on
+WriteGltf D0 "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D1 "$aGltfFile1"
+ReadGltf D "$aGltfFile2"
\ No newline at end of file
diff --git a/tests/de_mesh/gltf_write/test b/tests/de_mesh/gltf_write/test
new file mode 100644 (file)
index 0000000..708cfe0
--- /dev/null
@@ -0,0 +1,20 @@
+puts "========"
+puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
+puts "Test case exporting model into glb (binary glTF) file."
+puts "========"
+
+Close D0 -silent
+ReadGltf D0 [locate_data_file bug32867_test.glb]
+
+set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
+set aGltfFile2 "${imagedir}/${casename}_tmp2.glb"
+
+WriteGltf D0 "$aGltfFile1" -draco on
+WriteGltf D0 "$aGltfFile2" -draco on -mergefaces
+
+ReadGltf D1 "$aGltfFile1"
+XGetOneShape s1 D1
+checktrinfo s1 -tri 9366
+ReadGltf D "$aGltfFile2"
+XGetOneShape s2 D
+checktrinfo s2 -tri 9366
diff --git a/tests/heal/checkshape/bug32448_10 b/tests/heal/checkshape/bug32448_10
new file mode 100644 (file)
index 0000000..0984113
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_6101"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file OCC54.brep] b
+checkshape b -exact -parallel
index 54e63d22ea4b92a15c8fd1522fe0ba5ba404b805..536d8018d559bedb7e67a9dd302d67007d2330c9 100644 (file)
@@ -1,5 +1,5 @@
 puts "TODO OCC30286 Windows: Error : The length of result shape is 404.004, expected 404.386"
-puts "TODO CR33225 Linux: Error : The length of result shape is 404.004, expected 404.386"
+puts "TODO OCC30286 Linux: Error : The length of result shape is 404.492, expected 404.386"
 
 polyline f1 0 0 0  0 -10 0  100 -10 0  100 0 0  0 0 0
 polyline f2 100 0 0  110 0 0  110 100 0  100 100 0  100 0 0
diff --git a/tests/opengl/data/background/skydome b/tests/opengl/data/background/skydome
new file mode 100644 (file)
index 0000000..281bad2
--- /dev/null
@@ -0,0 +1,43 @@
+puts "============"
+puts "0032606: Visualization - add a shader for sky"
+puts "============"
+puts ""
+
+set THE_DIM 256
+
+pload MODELING VISUALIZATION
+psphere s 1
+
+vinit View1 -width 768 -height 512
+vcamera -persp -fovy 120
+
+chrono t restart
+vbackground -skydome -size $THE_DIM -cloud 0.3 -sunDir 1.0 0.5 0.0 -time 10 -fog 0.3
+chrono t show
+vaxo
+vdump $imagedir/${casename}_day.png
+
+chrono t restart
+vbackground -skydome -size $THE_DIM -cloud 0.3 -sunDir 1.0 -0.5 0.0 -time -10 -fog 0.05
+chrono t show
+vaxo
+vdump $imagedir/${casename}_night.png
+
+chrono t restart
+vbackground -skydome -size $THE_DIM -cloud 0.15 -sunDir 1.0 0.15 0.0 -time 10
+chrono t show
+vaxo
+vdump $imagedir/${casename}_sunset.png
+
+chrono t restart
+vbackground -skydome -size $THE_DIM
+chrono t show
+vaxo
+vdump $imagedir/${casename}_defaults.png
+
+vdisplay -dispMode 1 s
+vfit
+vaspects s -material SILVER
+vrenderparams -shadingModel pbr
+vlight headlight -enabled 0
+vdump $imagedir/${casename}_pbr.png
diff --git a/tests/opengl/data/general/bug25679 b/tests/opengl/data/general/bug25679
new file mode 100644 (file)
index 0000000..6a267ae
--- /dev/null
@@ -0,0 +1,33 @@
+puts "========"
+puts "OCC25679: Visualization, TKOpenGl - View frustum culling clips wrong objects"
+puts "========"
+puts ""
+
+pload MODELING VISUALIZATION
+
+set LINES_IN_ROW 50
+
+set aNoCulling $imagedir/${casename}_without.png
+set aWithCulling $imagedir/${casename}_with.png
+set aDiff $imagedir/${casename}_diff.png
+
+vinit View1
+
+for {set i 0} {$i < $LINES_IN_ROW} {incr i} {
+  for {set j 0} {$j < $LINES_IN_ROW} {incr j} {
+    set aLineName "line"
+    append aLineName [expr $i * $LINES_IN_ROW + $j]
+    vline $aLineName 0 0 0 1 0 0
+    vsetlocation $aLineName [expr $i * 3] [expr $j * 3] 0
+  }
+}
+
+vfit
+
+vrenderparams -frustumculling on
+vdump $aWithCulling
+vrenderparams -frustumculling off
+vdump $aNoCulling
+
+set aDiffRes [diffimage $aWithCulling $aNoCulling 0.1 0 0 $aDiff]
+if {$aDiffRes != 0} { puts "ERROR : Test failed: there is a difference between images rendered with and without frustum culling" }
diff --git a/tests/opengl/data/raytrace/bug25201 b/tests/opengl/data/raytrace/bug25201
new file mode 100644 (file)
index 0000000..9896f29
--- /dev/null
@@ -0,0 +1,53 @@
+puts "========"
+puts "OCC25201: Visualization - Implementing soft shadows and ambient occlusion in OCCT ray-tracing core"
+puts "========"
+
+pload MODELING VISUALIZATION
+
+# custom shapes
+set aShape1 [locate_data_file occ/Top.brep]
+set aShape2 [locate_data_file occ/Bottom.brep]
+
+# setup 3D viewer content
+vinit name=View1 w=512 h=512
+vglinfo
+
+vvbo 0
+vsetdispmode 1
+vbackground -gradient B4C8FF B4B4B4 -gradientMode VERTICAL
+vtextureenv on 4
+restore $aShape1 s1
+restore $aShape2 s2
+vdisplay s1 s2
+vsetmaterial s1 Gold
+vsetmaterial s2 Silver
+vsetlocation s1 0.0 0.1 0.0
+vlight -change 0 -dir 0.667 -0.667 -0.333 -smoothAngle 6 -intensity 100
+vturnview 3.0 -1.2 -0.1
+vfit
+
+# activate path tracing
+vrenderparams -raytrace
+vrenderparams -gi
+vrenderparams -rayDepth 12
+
+set aModeNum 0
+
+vbsdf s1 roughness 6400
+
+vfps 200
+vdump $imagedir/${casename}_${aModeNum}.png
+incr aModeNum
+
+vsetmaterial s1 glass
+vbsdf s1 absorpcoeff 1.0
+
+vfps 200
+vdump $imagedir/${casename}_${aModeNum}.png
+incr aModeNum
+
+vsetmaterial s2 plaster
+
+vfps 200
+vdump $imagedir/${casename}_${aModeNum}.png
+incr aModeNum
diff --git a/tests/opengl/data/raytrace/dof_mono b/tests/opengl/data/raytrace/dof_mono
new file mode 100644 (file)
index 0000000..b5ea196
--- /dev/null
@@ -0,0 +1,10 @@
+puts "========"
+puts "Ray Tracing - check depth-of-field"
+puts "========"
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+
+vrenderparams -ray -gi -rayDepth 10 -iss
+vrenderparams -aperture 0.1 -focal 2.0
+vfps 200
+vdump ${imagedir}/${casename}.png
diff --git a/tests/opengl/data/raytrace/dof_stereo b/tests/opengl/data/raytrace/dof_stereo
new file mode 100644 (file)
index 0000000..9e8d462
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "Ray Tracing - check depth-of-field"
+puts "========"
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+
+vrenderparams -ray -gi -rayDepth 10 -iss
+vrenderparams -aperture 0.1 -focal 2.0
+
+# activate stereo
+vstereo on
+vstereo -mode anaglyph
+vcamera -iod 0.1
+vfit 
+vfps 200
+vdump ${imagedir}/${casename}.png -stereo blend
diff --git a/tests/opengl/data/raytrace/normal_map b/tests/opengl/data/raytrace/normal_map
new file mode 100644 (file)
index 0000000..f9e2448
--- /dev/null
@@ -0,0 +1,34 @@
+puts "========"
+puts "0031275: Visualization, TKOpenGl - handle normal-map texture with Path-Tracing"
+puts "========"
+
+pload XDE OCAF MODELING VISUALIZATION
+Close D -silent
+ReadGltf D [locate_data_file bug31275_SphereWithNormalMap.glb]
+
+vclear
+vinit v -w 1024 -h 1024
+vbackground -cubemap [locate_data_file Circus_CubeMap_V.png]
+vcamera -persp
+vlight -clear
+vlight -add ambient
+XDisplay -dispmode 1 D
+vback
+vfit
+
+vrenderparams -ignoreNormalMap on
+vrenderparams -ray -gi -rayDepth 10
+vfps 200
+vdump ${imagedir}/${casename}_without_normal_map.png
+
+vrenderparams -ignoreNormalMap off
+vfps 200
+vdump ${imagedir}/${casename}_with_normal_map_back.png
+
+vfront
+vfps 200
+vdump ${imagedir}/${casename}_with_normal_map_front.png
+
+vlight -add positional -pos 0 0 0 -head 1 -intensity 10
+vfps 200
+vdump ${imagedir}/${casename}_point_light.png
diff --git a/tests/opengl/data/raytrace/pbr_spheres b/tests/opengl/data/raytrace/pbr_spheres
new file mode 100644 (file)
index 0000000..e2fbf0f
--- /dev/null
@@ -0,0 +1,43 @@
+puts "========"
+puts "0031225: Visualization, TKOpenGl - support cubemap for environment texture within Ray-Tracing"
+puts "Spheres grid with different roughness values"
+puts "========"
+
+cpulimit 600
+
+pload MODELING VISUALIZATION
+vclear
+vclose ALL
+source $env(CSF_OCCTSamplesPath)/tcl/vis_pbr_spheres.tcl
+
+vrenderparams -ray -gi -rayDepth 10
+vcamera -ortho
+vfit
+vlight -change 1 -intensity 0.0001
+vfps 200
+vdump $::imagedir/${::casename}_ortho0.png
+
+vlight -change 1 -intensity 0.3
+vfps 200
+vdump $::imagedir/${::casename}_ortho30.png
+
+vcamera -persp
+vfit
+vlight -change 1 -intensity 0.0001
+vfps 200
+vdump $::imagedir/${::casename}_persp0.png
+
+vlight -change 1 -intensity 0.3
+vfps 200
+vdump $::imagedir/${::casename}_persp30.png
+
+set aCubeMap [locate_data_file Circus_CubeMap_V.png]
+vlight -change 1 -intensity 1
+vbackground -cubemap $aCubeMap
+vcamera -ortho
+vfps 200
+vdump $::imagedir/${::casename}_orthoenv.png
+
+vcamera -persp
+vfps 200
+vdump $::imagedir/${::casename}_perspenv.png
diff --git a/tests/opengl/data/raytrace/sample_ball_alpha b/tests/opengl/data/raytrace/sample_ball_alpha
new file mode 100644 (file)
index 0000000..dfd7d58
--- /dev/null
@@ -0,0 +1,13 @@
+puts "============"
+puts "Visualization - Path Tracing, Ball sample"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_ball.tcl
+
+vtexture ball 21 -scale 0.1 0.1
+vsetmaterial ball plaster
+vbsdf ball -coatFresnel Constant 0.0
+
+vfps 100
+vdump $imagedir/${casename}_zoom.png
diff --git a/tests/opengl/data/raytrace/sample_ball_iss b/tests/opengl/data/raytrace/sample_ball_iss
new file mode 100644 (file)
index 0000000..32b9d31
--- /dev/null
@@ -0,0 +1,20 @@
+puts "============"
+puts "Visualization - Path Tracing, Ball sample (ISS mode)"
+puts "============"
+puts ""
+
+cpulimit 1000
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_ball.tcl
+
+vrenderparams -iss -nbtiles 64
+vfps 1024
+vdump $imagedir/${casename}_iss_64.png
+
+vrenderparams -iss -nbtiles 256
+vfps 256
+vdump $imagedir/${casename}_iss_256.png
+
+vrenderparams -iss -nbtiles 1024
+vfps 64
+vdump $imagedir/${casename}_iss_1024.png
diff --git a/tests/opengl/data/raytrace/sample_ball_wood b/tests/opengl/data/raytrace/sample_ball_wood
new file mode 100644 (file)
index 0000000..3fd1168
--- /dev/null
@@ -0,0 +1,13 @@
+puts "============"
+puts "0031135: Visualization, TKOpenGl - texture sRGB -> linear conversion is applied twice by Path Tracer"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_ball.tcl
+
+vtexture ball 11 -scale 0.1 0.1
+vsetmaterial ball plaster
+vbsdf ball -coatFresnel Constant 0.0
+
+vfps 100
+vdump $imagedir/${casename}_zoom.png
diff --git a/tests/opengl/data/raytrace/sample_cube b/tests/opengl/data/raytrace/sample_cube
new file mode 100644 (file)
index 0000000..44c965a
--- /dev/null
@@ -0,0 +1,8 @@
+puts "============"
+puts "Visualization - Path Tracing, Cube sample"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+vfps 200
+vdump ${imagedir}/${casename}.png
diff --git a/tests/opengl/data/raytrace/sample_cube_clamp b/tests/opengl/data/raytrace/sample_cube_clamp
new file mode 100644 (file)
index 0000000..338c735
--- /dev/null
@@ -0,0 +1,22 @@
+puts "============"
+puts "Visualization - Path Tracing, Cube sample with radiance clamping"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+
+vrenderparams -maxrad 1.0
+vfps 100
+vdump $imagedir/${casename}_1.png
+
+vrenderparams -maxrad 2.0
+vfps 100
+vdump $imagedir/${casename}_2.png
+
+vrenderparams -maxrad 10.0
+vfps 100
+vdump $imagedir/${casename}_10.png
+
+vrenderparams -maxrad 100.0
+vfps 100
+vdump $imagedir/${casename}_100.png
diff --git a/tests/opengl/data/raytrace/sample_cube_twosided b/tests/opengl/data/raytrace/sample_cube_twosided
new file mode 100644 (file)
index 0000000..ac872ad
--- /dev/null
@@ -0,0 +1,19 @@
+puts "============"
+puts "Visualization - Path Tracing, Cube sample"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+
+vaxo
+vfit
+vfps 100
+
+# Dump image produced with one-sided BSDFs
+vdump $imagedir/${casename}_onesided.png
+
+vrenderparams -twoside
+vfps 100
+
+# Dump image produced with two-sided BSDFs
+vdump $imagedir/${casename}_twosided.png
diff --git a/tests/opengl/data/raytrace/sample_materials b/tests/opengl/data/raytrace/sample_materials
new file mode 100644 (file)
index 0000000..95e25ea
--- /dev/null
@@ -0,0 +1,7 @@
+puts "============"
+puts "Visualization - Path Tracing, Materials sample"
+puts "============"
+puts ""
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_materials.tcl
+vdump $imagedir/${casename}_materials.png
diff --git a/tests/opengl/data/raytrace/tone_mapping b/tests/opengl/data/raytrace/tone_mapping
new file mode 100644 (file)
index 0000000..90bd049
--- /dev/null
@@ -0,0 +1,14 @@
+puts "========"
+puts "Ray Tracing - check tone mapping"
+puts "========"
+
+source $env(CSF_OCCTSamplesPath)/tcl/pathtrace_cube.tcl
+
+vrenderparams -ray -gi -rayDepth 10 -iss
+
+vrenderparams -tonemapping filmic
+vrenderparams -exposure -1.0
+vrenderparams -whitepoint 7.0
+vfit
+vfps 200
+vdump ${imagedir}/${casename}.png
diff --git a/tests/opengl/data/shading/pbr_spheres b/tests/opengl/data/shading/pbr_spheres
new file mode 100644 (file)
index 0000000..e3f3628
--- /dev/null
@@ -0,0 +1,34 @@
+puts "========"
+puts "0030700: Visualization, TKOpenGl - support PBR Metallic-Roughness shading model"
+puts "Spheres grid with different roughness values"
+puts "========"
+
+pload MODELING VISUALIZATION
+
+# PBR doesn't work with Compatible Profile on macOS
+if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+vclear
+vclose ALL
+source $env(CSF_OCCTSamplesPath)/tcl/vis_pbr_spheres.tcl
+
+vcamera -ortho
+vfit
+vlight -change 1 -intensity 0.0001
+vdump $::imagedir/${::casename}_ortho0.png
+vlight -change 1 -intensity 0.3
+vdump $::imagedir/${::casename}_ortho30.png
+vcamera -persp
+vfit
+vlight -change 1 -intensity 0.0001
+vdump $::imagedir/${::casename}_persp0.png
+vlight -change 1 -intensity 0.3
+vdump $::imagedir/${::casename}_persp30.png
+
+set aCubeMap [locate_data_file Circus_CubeMap_V.png]
+vlight -change 1 -intensity 1
+vbackground -cubemap $aCubeMap
+vcamera -ortho
+vdump $::imagedir/${::casename}_orthoenv.png
+vcamera -persp
+vdump $::imagedir/${::casename}_perspenv.png
diff --git a/tests/opengl/data/shading/shading_models b/tests/opengl/data/shading/shading_models
new file mode 100644 (file)
index 0000000..76306ae
--- /dev/null
@@ -0,0 +1,68 @@
+puts "========"
+puts "Test various Shading Models assigned per-object"
+puts "========"
+
+pload MODELING VISUALIZATION
+
+# PBR doesn't work with Compatible Profile on macOS
+#if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+# setup viewer
+vclear
+vclose ALL
+vinit View1 -width 912 -height 912
+
+# define spheres with a rough triangulation to easily distinguish Shading Models
+psphere p0 10
+copytranslate p11 p0  0  0 0
+copytranslate p12 p0 40  0 0
+copytranslate p21 p0  0 20 0
+copytranslate p22 p0 40 20 0
+copytranslate p31 p0  0 40 0
+copytranslate p32 p0 40 40 0
+compound p11 p12 p21 p22 p31 p32 ss
+incmesh ss 1
+vdefaults -autoTriang 0
+
+# display objects
+vdisplay -dispMode 1 p11 p12 p21 p22 p31 p32
+vdrawparray p41 triangles v  0 55 0 v  0 75 0 v 20 55 0 v  0 55 0 v  0 75 0 v  0 55 20 v  0 55 0 v  0 55 20 v 20 55 0 v  0 75 0 v  0 55 20 v 20 55 0
+vdrawparray p42 triangles v 40 55 0 v 40 75 0 v 60 55 0 v 40 55 0 v 40 75 0 v 40 55 20 v 40 55 0 v 40 55 20 v 60 55 0 v 40 75 0 v 40 55 20 v 60 55 0
+vtop
+vrotate -0.9 0.1 0
+vfit
+
+vcaps -ffp 1
+vdump $::imagedir/${::casename}_defaults_ffp.png
+
+vcaps -ffp 0
+vdump $::imagedir/${::casename}_defaults.png
+
+# customize shading models
+vaspects  p11 -setShadingModel VERTEX
+vdrawtext t11   Graphic3d_TOSM_VERTEX   -pos 10  5 10 -color RED -aspect BOLD
+vaspects  p12 -setShadingModel FRAGMENT
+vdrawtext t12   Graphic3d_TOSM_FRAGMENT -pos 50  5 10 -color RED -aspect BOLD
+
+vaspects  p21 -setShadingModel PBR
+vdrawtext t21   Graphic3d_TOSM_PBR       -pos 10 25 10 -color RED -aspect BOLD
+vaspects  p22 -setShadingModel PBR_FACET
+vdrawtext t22   Graphic3d_TOSM_PBR_FACET -pos 50 25 10 -color RED -aspect BOLD
+
+vaspects  p31 -setShadingModel UNLIT
+vdrawtext t31   Graphic3d_TOSM_UNLIT    -pos 10 45 10 -color RED -aspect BOLD
+vaspects  p32 -setShadingModel FACET
+vdrawtext t32   Graphic3d_TOSM_FACET    -pos 50 45 10 -color RED -aspect BOLD
+vaspects  p41 -setShadingModel VERTEX
+vdrawtext t41   Graphic3d_TOSM_VERTEX   -pos 10 65 10 -color RED -aspect BOLD
+vaspects  p42 -setShadingModel FACET
+vdrawtext t42   Graphic3d_TOSM_FACET    -pos 50 65 10 -color RED -aspect BOLD
+vdisplay -topmost t11 t12 t21 t22 t31 t32 t41 t42
+
+vcaps -ffp 1
+vdump $::imagedir/${::casename}_ffp.png
+
+vcaps -ffp 0
+vlight -change 1 -intensity 0.1
+vrenderparams -shadingModel pbr
+vdump $::imagedir/${::casename}.png
diff --git a/tests/opengl/data/textures/cubemap_dds b/tests/opengl/data/textures/cubemap_dds
new file mode 100644 (file)
index 0000000..60c7272
--- /dev/null
@@ -0,0 +1,36 @@
+puts "============"
+puts "0031478: Visualization, TKOpenGl - allow uploading Cubemap in compressed DDS format when supported by GPU"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+
+if { $::tcl_platform(os) == "Darwin" } {
+  # PBR doesn't work with Compatible Profile on macOS
+  vcaps -core
+}
+if { [vdriver -default] == "TKOpenGles" } {
+  puts "Skipping test case 'DDS texture': OpenGL ES does not support sRGB S3TC_DXT1 texture format"
+  return
+}
+
+set aCubeMapPNG [locate_data_file cubemap_labels.png]
+set aCubeMapDDS [locate_data_file cubemap_labels.dds]
+
+box b 1 2 3
+psphere s 1
+
+vclear
+vinit View1 -w 512 -h 512
+vcamera -fovy 100
+vzbufftrihedron
+#vdisplay -dispMode 1 b
+vdisplay -dispMode 1 s
+vfit
+
+vrenderparams -shadingModel pbr
+vbackground -cubemap $aCubeMapPNG -invertedz
+vdump $imagedir/${casename}_png.png
+
+vbackground -cubemap $aCubeMapDDS -invertedz
+vdump $imagedir/${casename}_dds.png
diff --git a/tests/opengl/data/textures/cubemap_ibl b/tests/opengl/data/textures/cubemap_ibl
new file mode 100644 (file)
index 0000000..0f283af
--- /dev/null
@@ -0,0 +1,25 @@
+puts "============"
+puts "0032590: Visualization, V3d_View - improve API for setting Image Based Lighting"
+puts "============"
+puts ""
+
+set aCubeMapLabs [locate_data_file cubemap_labels.png]
+
+pload MODELING VISUALIZATION
+
+# PBR doesn't work with Compatible Profile on macOS
+if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+vclear
+vclose ALL
+source $env(CSF_OCCTSamplesPath)/tcl/vis_pbr_spheres.tcl
+vcamera -fovy 100
+
+vbackground -cubemap $aCubeMapLabs -pbrEnv noIBL
+vdump $imagedir/${casename}_1.png
+
+vbackground -pbrEnv IBL
+vdump $imagedir/${casename}_2.png
+
+vbackground BLACK -pbrEnv KEEP
+vdump $imagedir/${casename}_3.png
diff --git a/tests/opengl/data/textures/pbr_tangent_normal b/tests/opengl/data/textures/pbr_tangent_normal
new file mode 100644 (file)
index 0000000..e371c6c
--- /dev/null
@@ -0,0 +1,31 @@
+puts "========"
+puts "0031302: Visualization, TKOpenGl - wrong tangent space calculation for normal maps"
+puts "Test for tangent space orientation."
+puts "========"
+
+pload XDE OCAF MODELING VISUALIZATION
+
+# PBR doesn't work with Compatible Profile on macOS
+if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+vclear
+vclose ALL
+
+vinit v -w 1024 -h 1024
+vcamera -persp
+vbackground -cubemap [locate_data_file Circus_CubeMap_V.png]
+vrenderparams -shadingModel PBR
+
+vlight -clear
+vlight -add ambient
+
+Close D -silent
+ReadGltf D [locate_data_file bug31302_NormalTangentTest.gltf]
+XDisplay -dispmode 1 D
+
+vfront
+vfit
+vdump $imagedir/${casename}_front.png
+
+vback
+vdump $imagedir/${casename}_back.png
diff --git a/tests/opengl/data/transparency/ior b/tests/opengl/data/transparency/ior
new file mode 100644 (file)
index 0000000..1dd6f66
--- /dev/null
@@ -0,0 +1,51 @@
+puts "========"
+puts "0031284: Visualization - XCAFDoc_VisMaterialPBR lacks Index of Refraction"
+puts "========"
+
+pload MODELING XDE OCAF VISUALIZATION
+if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+box b 0.5 1.0 -0.5 3 1 1
+psphere s1 0.5
+psphere s2 0.5
+psphere s3 0.5
+ttranslate s1 1 0 0
+ttranslate s2 2 0 0
+ttranslate s3 3 0 0
+Close D -silent
+XNewDoc D
+set l0 [XAddShape D b  0]
+set l1 [XAddShape D s1 0]
+set l2 [XAddShape D s2 0]
+set l3 [XAddShape D s3 0]
+XAddVisMaterial D m1 -baseColor GREEN -refractionIndex 1.0 -transparency 0.5 -metallic 0 -roughness 0
+XAddVisMaterial D m2 -baseColor GREEN -refractionIndex 1.3 -transparency 0.5 -metallic 0 -roughness 0
+XAddVisMaterial D m3 -baseColor GREEN -refractionIndex 2.5 -transparency 0.5 -metallic 0 -roughness 0
+XSetVisMaterial D $l1 m1
+XSetVisMaterial D $l2 m2
+XSetVisMaterial D $l3 m3
+
+vclear
+vinit View1
+vcamera -persp
+vfront
+XDisplay -dispMode 1 D
+vfit
+vviewparams -scale 245 -proj -0 -0.75 -0.66 -up 0 -0.66 0.75 -at 2.0 0.84 0.04
+vlight -change 0 -intensity 2.5
+vlight -change 1 -intensity 1.0
+set aCubeMap [locate_data_file Circus_CubeMap_V.png]
+vbackground -cubemap $aCubeMap
+
+vrenderparams -shadingModel PBR -raster
+vdump $imagedir/${casename}_pbr.png
+
+if { ![string match "OpenGL ES 2.0*" [vglinfo VERSION]] && ![string match "OpenGL ES 3.0*" [vglinfo VERSION]] } {
+  vrenderparams -raytrace -gi 0 -reflections 1 -rayDepth 10
+  vfps 200
+  vdump $imagedir/${casename}_rt.png
+
+  vrenderparams -raytrace -gi 1
+  vfps 200
+  vdump $imagedir/${casename}_pt.png
+}
index 71f52cb4ccb065c4e78ffafabe3395818a7fddcf..50a7369a71f27714b3fd30dc9a3d1a64f3d5e82e 100644 (file)
@@ -3,8 +3,6 @@ puts "Testing performance of Strtod() vs. standard strtod()"
 puts "================================================================="
 puts ""
 
-puts "TODO ?CR33225 Linux: is expected to be at least "
-
 pload QAcommands
 
 # Check that performance of Strtod() and Atof() is at least twice better 
diff --git a/tests/tools/begin b/tests/tools/begin
new file mode 100644 (file)
index 0000000..562c910
--- /dev/null
@@ -0,0 +1,3 @@
+if { [array get Draw_Groups "TOOLS Check commands"] == "" } {
+  pload TOOLS
+}
diff --git a/tests/tools/dfbrowser/A1 b/tests/tools/dfbrowser/A1
new file mode 100644 (file)
index 0000000..0c636d3
--- /dev/null
@@ -0,0 +1,12 @@
+pload DCAF
+pload INSPECTOR
+
+NewDocument Doc BinOcaf
+
+set aSetAttr1 100
+set aLabel 0:2
+SetInteger Doc ${aLabel} ${aSetAttr1}
+
+tinspector -plugins dfbrowser
+tinspector -update
+
diff --git a/tests/tools/dfbrowser/A2 b/tests/tools/dfbrowser/A2
new file mode 100644 (file)
index 0000000..e138425
--- /dev/null
@@ -0,0 +1,23 @@
+pload DCAF VISUALIZATION INSPECTOR
+
+NewDocument D BinOcaf
+tinspector -plugins dfbrowser
+
+cpulimit 300
+UndoLimit D 100
+
+NewCommand D
+
+NewCommand D
+
+set B2 [AddObject D]
+set F2 [AddFunction D $B2 Box]
+BoxDX D $B2 190
+BoxDY D $B2 290
+BoxDZ D $B2 390
+
+InitLogBook D
+AddDriver D Box Attach Cyl
+ComputeFun D $F2
+
+tinspector -update
diff --git a/tests/tools/dfbrowser/A3 b/tests/tools/dfbrowser/A3
new file mode 100644 (file)
index 0000000..8e83cd5
--- /dev/null
@@ -0,0 +1,2 @@
+pload INSPECTOR
+tinspector -plugins dfbrowser -open $env(CSF_OCCTDataPath)/step/screw.step -select 0:1:1:1
diff --git a/tests/tools/dfbrowser/A4 b/tests/tools/dfbrowser/A4
new file mode 100644 (file)
index 0000000..a761268
--- /dev/null
@@ -0,0 +1,150 @@
+pload DCAF INSPECTOR TOPTEST
+
+# Create the first document and set UndoLimit
+NewDocument Doc1 BinOcaf
+UndoLimit Doc1 100
+
+# Add an attribute to a data framework
+set aSetAttr1 100
+set aLabel 0:2
+SetInteger Doc1 ${aLabel} ${aSetAttr1}
+
+
+# Create the second document
+set test_name "OCC26961"
+set test_int 123
+set test_real 123.456e-7
+set test_int_arr {10 20}
+set test_real_arr {1.1 3.14 5.4e18}
+set test_extstr_arr {"sample string 1" "string 2"}
+set test_bool_arr {0 1}
+set test_ref_arr {"0:1:2:3:2" "0:1:2:3:1"}
+set test_byte_arr {15 25}
+set test_map {1 5 2 10}
+set test_map_sorted {1 2 5 10}
+set test_named_ints {i1 1 i2 2}
+set test_named_reals {r1 1.1 r2 2.2}
+set test_named_strings {s1 string1 s2 string2 s3 string3_string_extended s4 string4_double_extended s5 string5}
+set test_named_bytes {b1 65 b2 66}
+set test_ref "0:1:1"
+set test_guid "00000000-0000-0000-2222-000000000000"
+set test_comment "Sample document containing various attributes"
+set test_string "Sample string"
+set test_expr "2*pi*r"
+set test_var1 "0:1:2:3:2"
+set test_var2 "0:1:2:3:1"
+set test_point "111 222 333"
+set test_axisPos "10 10 30"
+set test_axisDir "11 22 33"
+set test_plane "15 25 35"
+set test_boxXYZ "10 20 30"
+set test_boxDX 100
+set test_boxDY 200
+set test_boxDZ 300
+set test_geom_t "cir"
+set test_failure 1
+set test_driver "G"
+set test_driver_id "2a96b604-ec8b-11d0-bee7-080009dc3333"
+set test_transp 0.5
+set test_color AQUAMARINE4
+set test_material 22
+set test_positionX 100
+set test_positionY 200
+set test_positionZ 300
+
+puts "Creating document"
+NewDocument D BinOcaf
+
+# Simple values
+SetInteger     D 0:1:1 $test_int
+SetReal        D 0:1:1 $test_real
+SetName        D 0:1:1 $test_name
+SetComment     D 0:1:1 $test_comment
+SetAsciiString D 0:1:1 $test_string
+
+# TagSource
+SetTagger D 0:1:2
+  
+# Reference
+SetReference D 0:1:3 $test_ref
+  
+# Directory
+#NewDirectory D 0:1:2:1
+
+# UAttribute
+#SetUAttribute D 0:1:2:2 $test_guid
+
+# Variable
+SetVariable D $test_var2 0 mm
+SetVariable D $test_var1 1 ""
+
+# Relation
+SetRelation D 0:1:2:3 "2*pi*r" $test_var1 $test_var2
+
+# TreeNode
+SetNode D 0:1:2:4
+
+# Arrays
+eval SetIntArray       D 0:1:1 1 1 2 $test_int_arr
+eval SetRealArray      D 0:1:1 1 1 3 $test_real_arr
+eval SetExtStringArray D 0:1:1 1 1 2 $test_extstr_arr
+eval SetRefArray       D 0:1:1   1 2 $test_ref_arr
+eval SetByteArray      D 0:1:1 1 1 2 $test_byte_arr
+
+# Lists
+eval SetIntegerList   D 0:1:1 $test_int_arr
+eval SetRealList      D 0:1:1 $test_real_arr
+eval SetExtStringList D 0:1:1 $test_extstr_arr
+eval SetBooleanList   D 0:1:1 $test_bool_arr
+eval SetReferenceList D 0:1:1 $test_ref_arr
+
+# IntPackedMap
+eval SetIntPackedMap  D 0:1:1 1 $test_map
+
+# NamedData
+eval SetNDataIntegers   D 0:1:4 2 $test_named_ints
+eval SetNDataReals      D 0:1:4 2 $test_named_reals
+eval SetNDataStrings    D 0:1:4 5 $test_named_strings
+eval SetNDataBytes      D 0:1:4 2 $test_named_bytes
+eval SetNDataIntArrays  D 0:1:4 ia 2 $test_int_arr
+eval SetNDataRealArrays D 0:1:4 ra 3 $test_real_arr
+
+# NamedShape  
+eval box Box $test_boxXYZ $test_boxDX $test_boxDY $test_boxDZ
+SetShape D 0:1:6 Box
+
+# Point
+eval point Point $test_point
+SetPoint D 0:1:5:1 Point
+
+# Axis
+eval line Axis $test_axisPos $test_axisDir
+SetAxis D 0:1:5:2 Axis
+
+# Plane
+eval plane Plane $test_plane
+SetPlane D 0:1:5:3 Plane
+
+# Geometry
+SetGeometry D 0:1:6 $test_geom_t
+
+# Constraint
+SetConstraint D 0:1:1 equal 0:1:6
+
+# PatternStd
+SetPattern D 0:1:1 5 0:1:6
+
+# Function
+SetFunction D 0:1:1 $test_guid $test_failure
+
+# AISPresentation
+AISInitViewer D
+AISSet          D 0:1:1 $test_driver
+AISTransparency D 0:1:1 $test_transp
+AISColor        D 0:1:1 $test_color
+AISMaterial     D 0:1:1 $test_material
+
+# Position
+SetPosition D 0:1:1 $test_positionX $test_positionY $test_positionZ
+
+tinspector -plugins dfbrowser
diff --git a/tests/tools/dfbrowser/A5 b/tests/tools/dfbrowser/A5
new file mode 100644 (file)
index 0000000..6fdadd1
--- /dev/null
@@ -0,0 +1,78 @@
+pload TOPTEST
+pload VISUALIZATION
+pload XDE
+pload QAcommands
+pload DCAF
+
+set Test "TNaming_Builder test"
+set IsDone 1
+set TestError ""
+
+puts "Creating document"
+NewDocument D MDTV-Standard
+set TestLab 0:1
+
+#################### PRIMITIVE EVOLUTION ####################
+box b 100 200 300
+
+explode b E
+if {[catch {BuildNamedShape D $TestLab:1 PRIMITIVE b}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build solid as primitive"
+}
+if {[catch {BuildNamedShape D [set TestLab]:1:1 PRIMITIVE b_1}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build edge as alone primitive"
+}
+if {[catch {BuildNamedShape D [set TestLab]:1:1 PRIMITIVE b_1 b_2 b_3}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build several edges as primitive over the old one"
+}
+if {[catch {BuildNamedShape D [set TestLab]:1:2 PRIMITIVE b_4 b_5 b_6}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build several edges as primitive"
+}
+
+
+#################### GENERATED EVOLUTION ####################
+box b2 200 300 400
+explode b2 F
+if {[catch {BuildNamedShape D $TestLab:2 GENERATED b b2}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build solid as generation"
+}
+if {[catch {BuildNamedShape D [set TestLab]:2:1 GENERATED b_1 b2_1}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as alone generation"
+}
+if {[catch {BuildNamedShape D [set TestLab]:2:2 GENERATED b_2 b2_2 b_2 b2_3 b_3 b2_4}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as generation n:m"
+}
+if {[catch {BuildNamedShape D [set TestLab]:2:1 GENERATED b_3 b2_1 b_3 b2_3 b_4 b2_4}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as generation n:m to the exists named shape"
+}
+
+#################### MODIFY EVOLUTION ####################
+box b3 300 400 500
+explode b3 F
+if {[catch {BuildNamedShape D $TestLab:3 MODIFY b2 b3}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build solid as modification"
+}
+if {[catch {BuildNamedShape D [set TestLab]:3:1 MODIFY b2_1 b3_1}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as alone modification"
+}
+if {[catch {BuildNamedShape D [set TestLab]:3:2 MODIFY b2_5 b3_2 b2_2 b3_3 b2_3 b3_4}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as modification n:m"
+}
+if {[catch {BuildNamedShape D [set TestLab]:3:1 MODIFY b2_3 b3_1 b_3 b3_3 b2_4 b3_4}] == 1} {
+       set IsDone 0
+       set TestError "$TestError # Can't build face as modification n:m to the exists named shape"
+}
+
+pload INSPECTOR
+tinspector -select 0:1:3:2 TNaming_NamedShape
diff --git a/tests/tools/dfbrowser/A6 b/tests/tools/dfbrowser/A6
new file mode 100644 (file)
index 0000000..7395f50
--- /dev/null
@@ -0,0 +1,76 @@
+pload DCAF
+
+chrono qat start
+# Create a new document and set UndoLimit
+NewDocument D BinOcaf
+
+#NewDocument D
+cpulimit 300
+UndoLimit D 100
+
+# Open a transaction
+NewCommand D
+
+puts "caf005-I3"
+set QA_DUP 0
+
+# Add an attribute to a data framework
+set aLabel_Root 0:2
+set aName_Root Label_1
+Label D ${aLabel_Root}
+SetName D ${aLabel_Root} ${aName_Root}
+
+set aName1 Label_1_1
+###set aChild1 [NewChild D ${aLabel_Root}]
+set aChild1 0:2:1
+Label D ${aChild1}
+SetName D ${aChild1} ${aName1}
+
+set aName2 Label_1_2
+###set aChild2 [NewChild D ${aLabel_Root}]
+set aChild2 0:2:2
+Label D ${aChild2}
+SetName D ${aChild2} ${aName2}
+
+set aName3 Label_1_1_1
+###set aChild3 [NewChild D ${aLabel_Root}]
+set aChild3 0:2:3
+Label D ${aChild3}
+SetName D ${aChild3} ${aName3}
+
+set aName4 Label_1_1_2
+###set aChild4 [NewChild D ${aLabel_Root}]
+set aChild4 0:2:4
+Label D ${aChild4}
+SetName D ${aChild4} ${aName4}
+
+set aName5 Label_1_1_3
+###set aChild5 [NewChild D ${aLabel_Root}]
+set aChild5 0:2:5
+Label D ${aChild5}
+SetName D ${aChild5} ${aName5}
+
+set aName6 Label_1_2_1
+###set aChild6 [NewChild D ${aLabel_Root}]
+set aChild6 0:2:6
+Label D ${aChild6}
+SetName D ${aChild6} ${aName6}
+
+set aName7 Label_1_2_2
+###set aChild7 [NewChild D ${aLabel_Root}]
+set aChild7 0:2:7
+Label D ${aChild7}
+SetName D ${aChild7} ${aName7}
+
+SetNode D ${aLabel_Root}
+AppendNode D ${aLabel_Root} ${aChild1}
+AppendNode D ${aLabel_Root} ${aChild2}
+AppendNode D ${aChild1} ${aChild3}
+AppendNode D ${aChild1} ${aChild4}
+AppendNode D ${aChild1} ${aChild5}
+AppendNode D ${aChild2} ${aChild6}
+AppendNode D ${aChild2} ${aChild7}
+
+pload INSPECTOR
+
+tinspector -plugins dfbrowser -select 0:2:6 TDataStd_TreeNode
diff --git a/tests/tools/dfbrowser/A7 b/tests/tools/dfbrowser/A7
new file mode 100644 (file)
index 0000000..1e835f2
--- /dev/null
@@ -0,0 +1,6 @@
+puts "========"
+puts "0029743: Samples - Inspector tool - crash by selecting TNaming_UsedShapes tree item"
+puts "========"
+
+pload INSPECTOR
+tinspector -plugins dfbrowser -open [locate_data_file bug29743.cbf] -select 0 TNaming_UsedShapes
diff --git a/tests/tools/dfbrowser/A8 b/tests/tools/dfbrowser/A8
new file mode 100644 (file)
index 0000000..c6c2e6d
--- /dev/null
@@ -0,0 +1,7 @@
+puts "========"
+puts "0029733: TInspector can't open several cbf files"
+puts "========"
+
+pload INSPECTOR
+tinspector -plugins dfbrowser -open [locate_data_file bug29743.cbf]
+tinspector -open [locate_data_file bug29733.cbf]
diff --git a/tests/tools/dfbrowser/A9 b/tests/tools/dfbrowser/A9
new file mode 100644 (file)
index 0000000..701be36
--- /dev/null
@@ -0,0 +1,12 @@
+puts "========"
+puts "0029841: Test cases from tools/dfbrowser periodically hang on Windows platform"
+puts "========"
+
+pload INSPECTOR
+
+tinspector -plugins dfbrowser
+
+for { set i 1 } { ${i} <= 10 } { incr i } {
+  tinspector -open [locate_data_file bug29743.cbf] -select 0 TNaming_UsedShapes
+  tinspector -open [locate_data_file bug29733.cbf] -select 0 TNaming_UsedShapes
+}
diff --git a/tests/tools/end b/tests/tools/end
new file mode 100644 (file)
index 0000000..57901e2
--- /dev/null
@@ -0,0 +1,2 @@
+# to end a test script
+puts "TEST COMPLETED"
diff --git a/tests/tools/grids.list b/tests/tools/grids.list
new file mode 100644 (file)
index 0000000..c8ade14
--- /dev/null
@@ -0,0 +1,3 @@
+001 dfbrowser
+001 shapeview
+001 vinspector
diff --git a/tests/tools/parse.rules b/tests/tools/parse.rules
new file mode 100644 (file)
index 0000000..396c2d9
--- /dev/null
@@ -0,0 +1,3 @@
+SKIPPED /Draw_Failure: Could not open: TKToolsDraw/ OCCT built without Qt tools
+FAILED /\bFaulty\b/ bad shape
+OK /Relative error of mass computation/ message from vprops
\ No newline at end of file
diff --git a/tests/tools/shapeview/A1 b/tests/tools/shapeview/A1
new file mode 100644 (file)
index 0000000..5093256
--- /dev/null
@@ -0,0 +1,11 @@
+pload ALL INSPECTOR
+
+tinspector -plugins shapeview
+
+box b1 200 100 120
+tinspector -shape b1
+
+box b2 100 200 220 100 120 100
+tinspector -shape b2
+
+tinspector -activate shapeview -select b1
diff --git a/tests/tools/shapeview/A2 b/tests/tools/shapeview/A2
new file mode 100644 (file)
index 0000000..0e78f44
--- /dev/null
@@ -0,0 +1,5 @@
+pload ALL INSPECTOR
+
+tinspector -plugins shapeview
+
+tinspector -open $env(CSF_OCCTDataPath)/occ/solid.brep shapeview
diff --git a/tests/tools/vinspector/A1 b/tests/tools/vinspector/A1
new file mode 100644 (file)
index 0000000..abc11f9
--- /dev/null
@@ -0,0 +1,18 @@
+pload ALL INSPECTOR
+
+tinspector -plugins vinspector
+
+vinit
+
+box box_1 0 0 200 100 100 100
+vdisplay box_1
+vselmode box_1 1 1
+vselmode box_1 3 1
+
+box box_2 180 120 200 150 150 150
+vdisplay box_2
+
+vfit
+
+tinspector -update -select box_1
+
diff --git a/tests/tools/vinspector/A2 b/tests/tools/vinspector/A2
new file mode 100644 (file)
index 0000000..54c6066
--- /dev/null
@@ -0,0 +1,9 @@
+pload ALL INSPECTOR
+
+tinspector -plugins vinspector
+
+vinit
+
+tinspector -open $env(CSF_OCCTDataPath)/occ/solid.brep
+vfit
+
diff --git a/tests/v3d/bugs/bug25760_2 b/tests/v3d/bugs/bug25760_2
new file mode 100644 (file)
index 0000000..39f3466
--- /dev/null
@@ -0,0 +1,118 @@
+puts "============"
+puts "CR25760: Visualization - precision factor added to ZNear, ZFar in method ZFitAll() of Graphic3d_Camera is not enough"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+vinit View1 w=409 h=409
+vclear
+
+vclear
+vautozfit 0
+
+proc test3d {dstart} {
+
+  set proj1 { 0.47243081629544409 -0.39335870920278265 -0.78871924644244684}
+  set proj2 {-0.31828216872577886  0.17649241059446089 -0.93142197208020105}
+
+  for {set i 1} {$i <= 3} {incr i} {
+    for {set r 1} {$r <= 3} {incr r} {
+
+      set x    [expr pow(100, $i)]
+      set y    [expr pow( 70, $i)]
+      set z    [expr pow( 50, $i)]
+      set dist [expr pow(100, $r)]
+
+      vclear
+      vertex v0  $x $y $z
+      vertex v1 [expr "$x + ($dist * [lindex $proj1 0])"] [expr "$y + ($dist * [lindex $proj1 1])"] [expr "$z + ($dist * [lindex $proj1 2])"]
+      vertex v2 [expr "$x + ($dist * [lindex $proj2 0])"] [expr "$y + ($dist * [lindex $proj2 1])"] [expr "$z + ($dist * [lindex $proj2 2])"]
+
+      for {set d [expr $dstart * {max ($x,$y,$z,$dist)}]} {$d <= 1e7} {set d [expr "abs ($d) * 1.2E5"]} {
+        for {set p 1} {$p <= 2} {incr p} {
+          set proj [set proj$p]
+
+          vremove -all
+          vdisplay v0
+          vdisplay v$p
+          vviewparams -eye [expr "$x - ($d * [lindex $proj 0])"] [expr "$y - ($d * [lindex $proj 1])"] [expr "$z - ($d * [lindex $proj 2])"] -at $x $y $z
+          vzfit
+
+          vremove -all
+          vdisplay v0
+          if { [checkcolor 204 204 1 1 0] != 1 } {
+            puts "Error: 3D projection test failed with the following parameters:"
+            vviewparams
+            vzrange
+            puts ""
+            puts "v1 x: $x"
+            puts "v1 y: $y"
+            puts "v1 z: $z"
+            puts "v2 x: [expr $x + ($dist * [lindex $proj 0])]"
+            puts "v2 y: [expr $y + ($dist * [lindex $proj 1])]"
+            puts "v2 z: [expr $z + ($dist * [lindex $proj 2])]"
+            puts ""
+            return 0
+          }
+
+          vremove -all
+          vdisplay v$p
+          if { [checkcolor 204 204 1 1 0] != 1 } {
+            puts "Error: 3D projection test failed with the following parameters:"
+            vviewparams
+            vzrange
+            puts ""
+            puts "v1 x: $x"
+            puts "v1 y: $y"
+            puts "v1 z: $z"
+            puts "v2 x: [expr $x + ($dist * [lindex $proj 0])]"
+            puts "v2 y: [expr $y + ($dist * [lindex $proj 1])]"
+            puts "v2 z: [expr $z + ($dist * [lindex $proj 2])]"
+            puts ""
+            return 0
+          }
+        }
+      }
+    }
+  }
+  return 1
+}
+
+set tcl_precision 16
+
+####################################################################
+# Test orthographic camera without frustum culling.                #
+# Test camera with scale 1E-8 to avoid jittering.                  # 
+####################################################################
+vcamera -ortho
+vviewparams -scale 1e-8
+vrenderparams -frustumculling off
+if { [test3d 1e-7] != 1 } { puts "Error: 3D projection test failed: camera is orthographic, view frustum culling is OFF" }
+
+####################################################################
+# Test orthographic camera with frustum culling.                   #
+# Test camera with scale 1E-8 to avoid jittering.                  # 
+####################################################################
+vcamera -ortho
+vviewparams -scale 1e-8
+vrenderparams -frustumculling on
+
+if { [test3d 1e-7] != 1 } {
+  puts "Error: 3D projection test failed: camera is orthographic, view frustum culling is ON"
+}
+
+####################################################################
+# Test perspective camera without frustum culling.                 #
+# Test camera with less starting distance 1.0 to avoid jittering. #
+####################################################################
+vcamera -persp
+vrenderparams -frustumculling off
+if { [test3d 1.0] != 1 } { puts "Error: 3D projection test failed: camera is perspective, view frustum culling is OFF" }
+
+####################################################################
+# Test perspective camera with frustum culling.                    #
+# Test camera with less starting distance 1.0 to avoid jittering. #
+####################################################################
+vcamera -persp
+vrenderparams -frustumculling on
+if { [test3d 1.0] != 1 } { puts "Error: 3D projection test failed: camera is perspective, view frustum culling is ON" }
diff --git a/tests/v3d/bugs/bug25853 b/tests/v3d/bugs/bug25853
new file mode 100644 (file)
index 0000000..ad187c1
--- /dev/null
@@ -0,0 +1,50 @@
+puts "=========="
+puts "OCC25853: Edges disappear or reappear when displaying new edges"
+puts "=========="
+puts ""
+
+pload MODELING VISUALIZATION
+vinit View1 w=1024 h=1024
+vsetdispmode View1 1
+vclear
+
+#vtop
+set scale 0.086865724500890112
+set vpprojx 0.0
+set vpprojy 0.0
+set vpprojz 1.0
+set vpupx 0.0
+set vpupy 1.0
+set vpupz 0.0
+set vpatx 4995
+set vpaty 500
+set vpatz 0
+set vpeyex 4995
+set vpeyey 500
+set vpeyez 0.0001
+vviewparams -scale $scale -eye $vpeyex $vpeyey $vpeyez -at $vpatx $vpaty $vpatz -up $vpupx $vpupy $vpupz -proj $vpprojx $vpprojy $vpprojz
+
+set NB 1000
+
+proc draw_lines {{distance 10.0}} {
+  # set colors to corner spheres
+  for {set i 0} {$i < $::NB} {incr i} {
+    set x [expr $i * $distance]
+    set ya 0.0
+    set yb 1000.0
+    set z 0.0
+    vertex v1 $x $ya $z
+    vertex v2 $x $yb $z
+    edge e$i v1 v2
+    vdisplay -update e$i
+    puts "$i: $x $ya $yb $z"
+  }
+}
+
+puts "Start test lines"
+draw_lines 10.0
+
+checkcolor 804 483 1 0 0
+checkcolor 860 500 1 0 0
+
+vdump $imagedir/${casename}.png
diff --git a/tests/v3d/bugs/bug30434 b/tests/v3d/bugs/bug30434
new file mode 100644 (file)
index 0000000..e1ebfa8
--- /dev/null
@@ -0,0 +1,43 @@
+puts "============="
+puts "0030434: Visualization, TKV3d - add 'NoUpdate' state of frustum culling optimization"
+puts "============="
+
+pload VISUALIZATION
+vclear
+vinit View1
+
+set THE_NB_POINTS 10
+puts "Creating [expr $THE_NB_POINTS * $THE_NB_POINTS * $THE_NB_POINTS] points..."
+for {set i 0} {$i < $THE_NB_POINTS} {incr i} {
+  for {set j 0} {$j < $THE_NB_POINTS} {incr j} {
+    for {set k 0} {$k < $THE_NB_POINTS} {incr k} {
+      vpoint p$i$j$k 3.*$i 3.*$j 3.*$k
+    }
+  }
+}
+
+vcamera -ortho
+vfront
+vfit
+vzoom 2
+vrenderparams -frustumculling on
+vrenderparams -frustumculling noupdate
+vfit
+if { [vreadpixel 92 92 rgb name] == "YELLOW" } { puts "Error: point should be clipped earlier" }
+vdump $::imagedir/${::casename}_ortho_culled.png
+vrenderparams -frustumculling off
+if { [vreadpixel 92 92 rgb name] != "YELLOW" } { puts "Error: point should NOT be clipped" }
+vdump $::imagedir/${::casename}_ortho_all.png
+
+vcamera -persp
+vaxo
+vfit
+vzoom 3
+vrenderparams -frustumculling on
+vrenderparams -frustumculling noupdate
+vfit
+if { [vreadpixel 114 92 rgb name] == "YELLOW" } { puts "Error: point should be clipped earlier" }
+vdump $::imagedir/${::casename}_persp_culled.png
+vrenderparams -frustumculling off
+if { [vreadpixel 114 92 rgb name] != "YELLOW" } { puts "Error: point should NOT be clipped" }
+vdump $::imagedir/${::casename}_persp_all.png
diff --git a/tests/v3d/bugs/bug30437_1 b/tests/v3d/bugs/bug30437_1
new file mode 100644 (file)
index 0000000..39e8aab
--- /dev/null
@@ -0,0 +1,32 @@
+puts "============="
+puts "0030437: Visualization, TKV3d - add Draw command to print rendering statistics"
+puts "============="
+
+pload MODELING VISUALIZATION
+vclear
+vinit View1
+
+set THE_NB_POINTS 10
+puts "Creating [expr $THE_NB_POINTS * $THE_NB_POINTS * $THE_NB_POINTS] points..."
+for {set i 0} {$i < $THE_NB_POINTS} {incr i} {
+  for {set j 0} {$j < $THE_NB_POINTS} {incr j} {
+    for {set k 0} {$k < $THE_NB_POINTS} {incr k} {
+      vpoint p$i$j$k 3.*$i 3.*$j 3.*$k
+    }
+  }
+}
+
+vcamera -ortho
+vfront
+vfit
+vzoom 2
+set aPointsNb_1 [vstatprofiler points]
+if [expr $aPointsNb_1 != 160] { puts "Error: unexpected number of not culled points 1" }
+
+vcamera -persp
+vaxo
+vfit
+vzoom 3
+set aPointsNb_2 [vstatprofiler points]
+if [expr $aPointsNb_2 != 307] { puts "Error: unexpected number of not culled points 2" }
+vdump $imagedir/${casename}.png
diff --git a/tests/v3d/materials/pbr1 b/tests/v3d/materials/pbr1
new file mode 100644 (file)
index 0000000..384f1be
--- /dev/null
@@ -0,0 +1,16 @@
+# PBR requires OpenGL 3.0+ on macOS
+pload VISUALIZATION
+pload OPENGL
+if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
+
+source $env(CSF_OCCTSamplesPath)/tcl/materials.tcl
+vlight -change 0 -intensity 5
+vrenderparams -shadingModel PBR -msaa 0
+vdump $imagedir/${casename}_default.png
+
+set aCubeMap [locate_data_file Circus_CubeMap_V.png]
+vbackground -cubemap $aCubeMap
+vdump $imagedir/${casename}_env.png
+
+vbackground -cubemap $aCubeMap -invertedz
+vdump $imagedir/${casename}_env_iz.png
diff --git a/tests/v3d/memory/bug172 b/tests/v3d/memory/bug172
new file mode 100644 (file)
index 0000000..dacd99c
--- /dev/null
@@ -0,0 +1,25 @@
+puts "========"
+puts "OCC172"
+puts "========"
+
+pload XDE VISUALIZATION QAcommands
+
+# disable VBO to avoid false memory leaks reported on NVIDIA graphics, see issue #29996
+pload OPENGL
+vcaps -vbo 0
+
+vinit View1
+restore [locate_data_file OCC162.brep] s 
+vdisplay s
+
+set listmem {}
+set i_max 10
+for {set i 1} {${i} <= ${i_max}} {incr i} {
+  # select shape
+  OCC172
+  # deselect shape
+  OCC172
+
+  lappend listmem [meminfo h]
+  checktrend $listmem 0 1 "Memory leak detected"
+}
diff --git a/tests/v3d/memory/bug26538 b/tests/v3d/memory/bug26538
new file mode 100644 (file)
index 0000000..ea409df
--- /dev/null
@@ -0,0 +1,26 @@
+puts "============"
+puts "OCC26538: Visualization - Infinite growth of maxtrix stack in OpenGl_Structure::Render"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+box b1 1 1 1
+box b2 1 1 1
+
+vclear
+vinit View1
+vdisplay b1 b2
+vsetlocation b2 10 10 10
+vfit
+
+set listmem {}
+set aNbChecks 50
+for {set anIter 1} {$anIter <= $aNbChecks} {incr anIter} {
+  vfps 100
+  lappend listmem [meminfo h]
+  #checktrend $listmem 0 1 "Memory leak detected"
+}
+puts $listmem
+
+checktrend $listmem 0 1 "Memory leak detected"
+vdump ${imagedir}/${casename}.png
diff --git a/tests/v3d/memory/bug29412 b/tests/v3d/memory/bug29412
new file mode 100644 (file)
index 0000000..b82d855
--- /dev/null
@@ -0,0 +1,28 @@
+puts "# ==================================================================="
+puts "# 0029412: Huge Memory leak since I upgraded to OC 6.9.0"
+puts "# ==================================================================="
+puts ""
+
+pload VISUALIZATION QAcommands
+pload OPENGL
+vcaps -vsync 0
+vinit View1
+vglinfo
+
+OCC29412 100 ;# just to initialize
+
+meminfo
+vmemgpu
+
+set heap_before [meminfo heap]
+OCC29412
+set heap_after [meminfo heap]
+
+meminfo
+vmemgpu 
+
+# check that memory increase is moderate: can be up to 75 KiB on Debian;
+# note that the leak in OCCT 6.9.0 - 7.0.0 was ~ 19 MiB
+if { $heap_after - $heap_before > 100 * 1024 } {
+  puts "Error: memory leak of [expr ($heap_after - $heap_before) / 1024] KiB"
+}
diff --git a/tests/v3d/trsf/bug24623_3 b/tests/v3d/trsf/bug24623_3
new file mode 100644 (file)
index 0000000..46dd910
--- /dev/null
@@ -0,0 +1,44 @@
+puts "============"
+puts "OCC24623_3: Visualization - improve selection mechanism"
+puts "Tests memory leaks in creation of selection primitives for connected interactive objects:"
+puts "checks that there is no 'dead links' in removing Select3D_BVHPrimitiveContent"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+psphere s 0.5
+tclean  s
+incmesh s 0.001
+trinfo  s
+
+set aMemInit [meminfo h]
+set aNb 1000
+
+# display as copies
+eval compound [lrepeat $aNb s] ss
+explode ss
+for {set i 1} {$i <= $aNb} {incr i} { vloadselection ss_${i}; vsetlocation -noupdate ss_${i} ${i} 0 0 }
+vfit
+set aMemSel1  [meminfo h]
+vclear
+set aMemClear1 [meminfo h]
+
+# display as connected instances of single presentation
+vconnectto i_1 0 0 0 s -nodisplay
+vloadselection i_1
+for {set i 2} {$i < $aNb} {incr i} { vconnectto i_${i} ${i} 0 0 i_1 -nodisplay; vloadselection i_${i} }
+set aMemSel2  [meminfo h]
+vclear
+set aMemClear2 [meminfo h]
+
+puts "Initial memory               : [expr $aMemInit   / (1024 * 1024)] MiB"
+puts "Compute selection (simple)   : [expr $aMemSel1  / (1024 * 1024)] MiB"
+puts "Clearing (simple)            : [expr $aMemClear1 / (1024 * 1024)] MiB"
+puts "Compute selection (connected): [expr $aMemSel2  / (1024 * 1024)] MiB"
+puts "Clearing (connected)         : [expr $aMemClear2 / (1024 * 1024)] MiB"
+
+set aRatio [expr $aMemClear2 / double($aMemClear1)]
+
+# check if the memory difference is greater than 10%
+if {[expr $aRatio > 1.1]} { puts "Error : TEST FAILED" }
+vdump $imagedir/${casename}.png
diff --git a/tests/v3d/trsf/bug24623_4 b/tests/v3d/trsf/bug24623_4
new file mode 100644 (file)
index 0000000..997603f
--- /dev/null
@@ -0,0 +1,37 @@
+puts "============"
+puts "OCC24623_4: Visualization - improve selection mechanism"
+puts "Tests memory leaks in creation of selection primitives for connected interactive objects:"
+puts "checks that there is no 'dead links' to reference interactives after its clearing"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+psphere s 0.5
+tclean  s
+incmesh s 0.001
+trinfo  s
+vinit
+vclear
+
+set aMemInit [meminfo h]
+set anIterNb 100
+
+for {set anIterCount 0} {$anIterCount < $anIterNb} {incr anIterCount} {
+  set aNb 11
+
+  vconnectto i_1 0 0 0 s -nodisplay
+  vloadselection i_1
+  for {set i 2} {$i < $aNb} {incr i} { vconnectto i_${i} ${i} 0 0 i_1 -nodisplay; vloadselection i_${i} }
+  vclear
+}
+
+set aMemClear [meminfo h]
+
+puts "Initial memory : [expr $aMemInit   / (1024 * 1024)] MiB"
+puts "Clearing       : [expr $aMemClear  / (1024 * 1024)] MiB"
+
+set aRatio [expr $aMemClear / double($aMemInit)]
+
+# check if the memory difference is greater than 20%
+if {[expr $aRatio > 1.2]} { puts "Error : TEST FAILED" }
+vdump $imagedir/${casename}.png
diff --git a/tests/v3d/trsf/bug25532 b/tests/v3d/trsf/bug25532
new file mode 100644 (file)
index 0000000..4f24614
--- /dev/null
@@ -0,0 +1,50 @@
+puts "============"
+puts "OCC25532: Visualization - fix cross-references between AIS_ConnectedInteractive and connected presentation"
+puts "============"
+puts ""
+
+pload MODELING VISUALIZATION
+pload OPENGL
+psphere s 0.5
+tclean  s
+incmesh s 0.001
+trinfo  s
+
+vclear
+vinit View1
+vaxo
+vcaps -vbo 0
+vsetdispmode 1
+vdefaults -absDefl 1.0
+vselprops -autoactivate 0
+
+set aMemInit [meminfo h]
+set aNb 1000
+
+# display as copies
+eval compound [lrepeat $aNb s] ss
+explode ss
+for {set i 1} {$i <= $aNb} {incr i} { vdisplay -noupdate ss_${i}; vsetlocation -noupdate ss_${i} ${i} 0 0 }
+vfit
+set aMemDisp1  [meminfo h]
+vclear
+set aMemClear1 [meminfo h]
+
+# display as connected instances of single presentation
+vconnectto i_1 0 0 0 s
+for {set i 2} {$i < $aNb} {incr i} { vconnectto i_${i} ${i} 0 0 i_1 }
+set aMemDisp2  [meminfo h]
+vclear
+set aMemClear2 [meminfo h]
+
+puts "Initial memory:         [expr $aMemInit   / (1024 * 1024)] MiB"
+puts "Displaying (simple):    [expr $aMemDisp1  / (1024 * 1024)] MiB"
+puts "Clearing   (simple):    [expr $aMemClear1 / (1024 * 1024)] MiB"
+puts "Displaying (connected): [expr $aMemDisp2  / (1024 * 1024)] MiB"
+puts "Clearing   (connected): [expr $aMemClear2 / (1024 * 1024)] MiB"
+
+set aRatio [expr $aMemClear2 / double($aMemClear1)]
+
+# check if the memory difference is greater than 20%
+if [expr $aRatio > 1.2] { puts "Error : TEST FAILED" }
+vdump ${imagedir}/${casename}.png
diff --git a/tests/vselect/bugs/bug27318 b/tests/vselect/bugs/bug27318
new file mode 100644 (file)
index 0000000..ec682f0
--- /dev/null
@@ -0,0 +1,34 @@
+puts "TODO OCC27318 MacOS: Error : TEST FAILED"
+
+puts "========"
+puts "OCC27318: Memory is not released in Select3D_SensitiveSet when destroying AIS_InteractiveContext without removing objects"
+puts "========"
+puts ""
+
+pload VISUALIZATION QAcommands
+
+# to measure initial memory correctly, open and close interactive context
+# to load FreeImage
+vinit
+vclose
+set aMemInit [meminfo h]
+puts "Initial mem: [expr $aMemInit   / (1024 * 1024)] MiB ([expr $aMemInit])"
+
+# create a box and display it in each interactive context. The context is
+# the only instance that references to the box. Therefore, the box must be
+# removed completely after each context's closing
+for {set anIter 0} {$anIter < 300} {incr anIter} {
+  vinit
+  OCC27318
+  vclose
+}
+
+set aMemAfter [meminfo h]
+puts "Memory after closing interactive context several times: [expr $aMemAfter   / (1024 * 1024)] MiB ([expr $aMemAfter])"
+
+set aRatio [expr $aMemAfter / double($aMemInit)]
+
+# check if the memory difference is greater than 5%
+if [expr $aRatio > 1.05] {
+  puts "Error : TEST FAILED"
+}