From 75d9abb1c3a10ef9f035c3bebf346e10786d47df Mon Sep 17 00:00:00 2001 From: rambetter Date: Wed, 12 Jan 2011 07:09:53 +0000 Subject: [PATCH] Adding decal_misalignment regression test for q3map2. git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@426 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- .../q3map2/decal_misalignment/README.txt | 16 ++ .../maps/decal_misalignment.map | 102 +++++++++++ .../scripts/ramb_common.shader | 170 ++++++++++++++++++ .../radiant_regression_tests/bigtile.tga | Bin 0 -> 3116 bytes .../radiant_regression_tests/glass.tga | Bin 0 -> 38782 bytes .../radiant_regression_tests/qer_glass.tga | Bin 0 -> 1068 bytes .../radiant_regression_tests/tile_trans.tga | Bin 0 -> 3884 bytes 7 files changed, 288 insertions(+) create mode 100644 regression_tests/q3map2/decal_misalignment/README.txt create mode 100644 regression_tests/q3map2/decal_misalignment/maps/decal_misalignment.map create mode 100644 regression_tests/q3map2/decal_misalignment/scripts/ramb_common.shader create mode 100644 regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/bigtile.tga create mode 100644 regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/glass.tga create mode 100644 regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/qer_glass.tga create mode 100644 regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/tile_trans.tga diff --git a/regression_tests/q3map2/decal_misalignment/README.txt b/regression_tests/q3map2/decal_misalignment/README.txt new file mode 100644 index 00000000..f9aa3d6d --- /dev/null +++ b/regression_tests/q3map2/decal_misalignment/README.txt @@ -0,0 +1,16 @@ +DESCRIPTION OF PROBLEM: +======================= + +The info_null in the map for the decal is not 100% below the center of the +decal itself, because to be totally below it would have to lie on half-units. +So, the info_null lies almost directly below the center of the decal. In +this particular case, all kinds of bad things happen to the decal. For one, +during compiling we get warnings like this: + + Bad texture matrix! (B) (50.512253, -49.515625) != (50.484375, -49.515625) + Bad texture matrix! (C) (48.723190, -49.522587) != (48.695312, -49.515625) + Bad texture matrix! (B) (48.723186, -49.522587) != (48.695312, -49.515625) + +If you look at where the decal (it's just a blue translucent tile texture) +meets the far wall, it's clearly not aligned correctly. The tile on the decal +and the tile on the wall should align perfectly, and it's quite a bit off. diff --git a/regression_tests/q3map2/decal_misalignment/maps/decal_misalignment.map b/regression_tests/q3map2/decal_misalignment/maps/decal_misalignment.map new file mode 100644 index 00000000..aaa96b91 --- /dev/null +++ b/regression_tests/q3map2/decal_misalignment/maps/decal_misalignment.map @@ -0,0 +1,102 @@ +// entity 0 +{ +"classname" "worldspawn" +// brush 0 +{ +( 6472 6336 -960 ) ( 6288 6336 -960 ) ( 6288 6320 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6264 6320 -576 ) ( 6264 6336 -576 ) ( 6448 6336 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6280 6328 -832 ) ( 6464 6328 -832 ) ( 6464 6328 -848 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6320 -832 ) ( 6464 6336 -832 ) ( 6464 6336 -848 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6336 -832 ) ( 6280 6336 -832 ) ( 6280 6336 -848 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +( 6144 6336 -832 ) ( 6144 6320 -832 ) ( 6144 6320 -848 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +} +// brush 1 +{ +( 6552 6520 -960 ) ( 6464 6520 -960 ) ( 6464 6336 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6336 -576 ) ( 6464 6520 -576 ) ( 6552 6520 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6336 -576 ) ( 6552 6336 -576 ) ( 6552 6336 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6472 6344 -576 ) ( 6472 6528 -576 ) ( 6472 6528 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6528 7360 -576 ) ( 6440 7360 -576 ) ( 6440 7360 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6520 -576 ) ( 6464 6336 -576 ) ( 6464 6336 -960 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +} +// brush 2 +{ +( 6464 7424 -960 ) ( 6144 7424 -960 ) ( 6144 7360 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 7360 -576 ) ( 6144 7424 -576 ) ( 6464 7424 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 7360 -576 ) ( 6464 7360 -576 ) ( 6464 7360 -960 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +( 6464 7360 -576 ) ( 6464 7424 -576 ) ( 6464 7424 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 7368 -576 ) ( 6144 7368 -576 ) ( 6144 7368 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 7424 -576 ) ( 6144 7360 -576 ) ( 6144 7360 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +} +// brush 3 +{ +( 6144 7360 -960 ) ( 5880 7360 -960 ) ( 5880 6808 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 5880 6808 -576 ) ( 5880 7360 -576 ) ( 6144 7360 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 5864 6336 -576 ) ( 6128 6336 -576 ) ( 6128 6336 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 6808 -576 ) ( 6144 7360 -576 ) ( 6144 7360 -960 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +( 6144 7360 -576 ) ( 5880 7360 -576 ) ( 5880 7360 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6136 7384 -576 ) ( 6136 6832 -576 ) ( 6136 6832 -960 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +} +// brush 4 +{ +( 6456 7360 -968 ) ( 6136 7360 -968 ) ( 6136 6336 -968 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 6336 -960 ) ( 6144 7360 -960 ) ( 6464 7360 -960 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +( 6144 6336 -960 ) ( 6464 6336 -960 ) ( 6464 6336 -1008 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6336 -960 ) ( 6464 7360 -960 ) ( 6464 7360 -1008 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 7360 -960 ) ( 6144 7360 -960 ) ( 6144 7360 -1008 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 7360 -960 ) ( 6144 6336 -960 ) ( 6144 6336 -1008 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +} +// brush 5 +{ +( 6464 7360 -576 ) ( 6152 7360 -576 ) ( 6152 6336 -576 ) radiant_regression_tests/bigtile 0 0 0 0.500000 0.500000 0 0 0 +( 6176 6336 -568 ) ( 6176 7360 -568 ) ( 6488 7360 -568 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6152 6336 -472 ) ( 6464 6336 -472 ) ( 6464 6336 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 6336 -472 ) ( 6464 7360 -472 ) ( 6464 7360 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6464 7360 -472 ) ( 6152 7360 -472 ) ( 6152 7360 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +( 6144 7360 -472 ) ( 6144 6336 -472 ) ( 6144 6336 -576 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0 +} +// brush 6 +{ +( 6200 7360 -896 ) ( 6200 6336 -896 ) ( 6592 6336 -896 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +( 6360 6336 -832 ) ( 6360 7256 -832 ) ( 6464 7256 -832 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +( 6208 6337 -832 ) ( 6400 6337 -832 ) ( 6400 6337 -896 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +( 6463 6336 -816 ) ( 6463 7360 -816 ) ( 6463 7360 -880 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +( 6232 7264 -896 ) ( 6232 7264 -832 ) ( 6232 6337 -896 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +( 6232 7256 -832 ) ( 6232 7256 -896 ) ( 6463 7256 -832 ) radiant_regression_tests/glass 0 0 0 0.500000 0.500000 134217728 257 0 +} +} +// entity 1 +{ +"target" "checker" +"classname" "_decal" +// brush 0 +{ +patchDef2 +{ +radiant_regression_tests/tile_trans +( 3 3 0 0 0 ) +( +( ( 6462 7255 -832 50.484375 -56.679688 ) ( 6462 6796.500000 -832 50.484375 -53.097656 ) ( 6462 6338 -832 50.484375 -49.515625 ) ) +( ( 6347.500000 7255 -832 49.589844 -56.679688 ) ( 6347.500000 6796.500000 -832 49.589844 -53.097656 ) ( 6347.500000 6338 -832 49.589844 -49.515625 ) ) +( ( 6233 7255 -832 48.695312 -56.679688 ) ( 6233 6796.500000 -832 48.695312 -53.097656 ) ( 6233 6338 -832 48.695312 -49.515625 ) ) +) +} +} +} +// entity 2 +{ +"targetname" "checker" +"origin" "6347 6796 -840" +"classname" "info_null" +} +// entity 3 +{ +"origin" "6288 6704 -712" +"classname" "info_player_deathmatch" +} +// entity 4 +{ +"light" "2000" +"origin" "6304 6792 -704" +"classname" "light" +} diff --git a/regression_tests/q3map2/decal_misalignment/scripts/ramb_common.shader b/regression_tests/q3map2/decal_misalignment/scripts/ramb_common.shader new file mode 100644 index 00000000..2dce0da7 --- /dev/null +++ b/regression_tests/q3map2/decal_misalignment/scripts/ramb_common.shader @@ -0,0 +1,170 @@ +textures/ramb_common/caulk +{ + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nomarks +} + +textures/ramb_common/hollowcaulk +{ + qer_editorImage textures/ramb_common/caulk.jpg + qer_trans 0.5 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nomarks + surfaceparm nonsolid +} + +textures/ramb_common/nonsolidcaulk +{ + qer_editorImage textures/ramb_common/caulk.jpg + qer_trans 0.2 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nonsolid + surfaceparm trans + surfaceparm nomarks + surfaceparm detail +} + +textures/ramb_common/softslickcaulk +{ + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nomarks + surfaceparm nodamage + surfaceparm slick +} + +textures/ramb_common/softcaulk +{ + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nomarks + surfaceparm nodamage +} + +textures/ramb_common/trigger +{ + qer_trans 0.5 + qer_nocarve + surfaceparm nodraw + surfaceparm detail +} + +textures/ramb_common/playerclip +{ + qer_trans 0.5 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nonsolid + surfaceparm trans + surfaceparm nomarks + surfaceparm noimpact + surfaceparm playerclip + surfaceparm slick + surfaceparm nodamage + surfaceparm detail +} + +textures/ramb_common/tractionplayerclip +{ + qer_trans 0.5 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nonsolid + surfaceparm trans + surfaceparm nomarks + surfaceparm noimpact + surfaceparm playerclip + surfaceparm nodamage + surfaceparm detail +} + +textures/ramb_common/nodrop +{ + qer_trans 0.3 + qer_nocarve + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nonsolid + surfaceparm trans + surfaceparm nomarks + surfaceparm detail + surfaceparm nodrop +} + +textures/ramb_common/clearfiller +{ + qer_trans 0.4 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm trans + surfaceparm nodamage + surfaceparm detail +} + +textures/ramb_common/slickclearfiller +{ + qer_trans 0.4 + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm trans + surfaceparm slick + surfaceparm nodamage + surfaceparm detail +} + +textures/ramb_common/origin +{ + qer_nocarve + surfaceparm nodraw + surfaceparm nolightmap + surfaceparm nonsolid + surfaceparm trans + surfaceparm origin +} + +textures/ramb_common/hint +{ + qer_nocarve + qer_trans 0.30 + surfaceparm nodraw + surfaceparm nonsolid + surfaceparm structural + surfaceparm trans + surfaceparm hint +} + +textures/ramb_common/alpha50 +{ + qer_editorImage textures/ramb_common/alpha.jpg + qer_trans 0.4 + q3map_alphaMod volume + q3map_alphaMod set 0.5 + surfaceparm nodraw + surfaceparm nonsolid + surfaceparm trans +} + +textures/ramb_common/alpha35 +{ + qer_editorImage textures/ramb_common/alpha.jpg + qer_trans 0.3 + q3map_alphaMod volume + q3map_alphaMod set 0.35 + surfaceparm nodraw + surfaceparm nonsolid + surfaceparm trans +} + +textures/ramb_common/alpha20 +{ + qer_editorImage textures/ramb_common/alpha.jpg + qer_trans 0.2 + q3map_alphaMod volume + q3map_alphaMod set 0.2 + surfaceparm nodraw + surfaceparm nonsolid + surfaceparm trans +} diff --git a/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/bigtile.tga b/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/bigtile.tga new file mode 100644 index 0000000000000000000000000000000000000000..b4adef0df8411e74b86f12dc4ff1791727d6c06b GIT binary patch literal 3116 zcmZQz;9`ISMg~R+hW-El|Nqax0H#OTqv0^((f|Vk11JmZ2jziL_W#jv7)=kOX<#%B ujF>b4D*QoZ|NsC0M_k=E>h}@f?uGRRLV`kF!#smM{rz+!+&q0;^%wxDVEyU< literal 0 HcmV?d00001 diff --git a/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/glass.tga b/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/glass.tga new file mode 100644 index 0000000000000000000000000000000000000000..506baedbc605dd6b19672e6a4763310885a8c100 GIT binary patch literal 38782 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 Sm}ju3zn^Y|o2QSf9s>aEM(SSx literal 0 HcmV?d00001 diff --git a/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/qer_glass.tga b/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/qer_glass.tga new file mode 100644 index 0000000000000000000000000000000000000000..d5683e3df73f4cea9db16631a7ced9f8995c884c GIT binary patch literal 1068 zcmZQz;9`J*28IR(35NL$3=I4K{|D2fZ2E`8|Ns9PMlv2vbM#Mh$YBmE4MKuKUBf(s PJ^lT3BiuZFT=f_LV|BzG literal 0 HcmV?d00001 diff --git a/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/tile_trans.tga b/regression_tests/q3map2/decal_misalignment/textures/radiant_regression_tests/tile_trans.tga new file mode 100644 index 0000000000000000000000000000000000000000..a9410ca0e514497d12b0f5760035410a64eb5295 GIT binary patch literal 3884 zcmZQz;9`ISMg~R&j{P9+|N2Y@S1=1qjB-aq1C%UA69WUopwA1Stot7vTOihc5HZSS zU;qaMm>3O>(a-?piqXWt;5wQYM)SgGUT~#mQ2?rX2Yn-9)RBX~AvYRF0})4{PzT|V VpitK^&tOk~Kivp7Paju31^|%TMce=Y literal 0 HcmV?d00001