Viewer Materials Smoke Test

= Overview =
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces
* A high-level specification of this featureset can be found at Material_Data
= Build Tool Test =
== Required Materials ==
* A region which supports normal and specular maps
** As of Second Life Server 13.02.08.270166, materials support is in the server.
* Three test users
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) 
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.
* Upload the following textures to use in this test:
** :File:TestDiffuse001.png
** :File:TestNormal001.png
** :File:TestSpecular001.png
== Verify Basic Build Tool Layout ==
=== Verify that non-Texture portions of the build tool have not changed ===
# UserA, UserB, and UserC: login
# UserA and UserC: each rez a box
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:
#* General
#* Object
#* Features
#* Content
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)
#* Focus (magnifying glass icon)
#* Move (hand icon)
#* Edit (mouse cursor icon)
#* Create (magic wand icon)
#* Land (bulldozer icon)
# UserA: deselect the box
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)
=== Verify layout and default values of build tool's Texture tab ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): :File:MaterialsBuildUI1.png. Verify that the following defaults are set:
#* Verify that "Materials" is the default face edit mode
#* Verify that "Texture (diffuse)" is the default texture edit mode
#* Verify that the Color appears white
#* Verify that Transparency is 0%
#* Verify that Glow is 0.00
#* Verify that 'Full Bright' is disabled
#* Verify that the texture preview shows the default plywood texture
#* Verify that 'Alpha mode' is 'Alpha blending'
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)
=== Verify layout and default values for Mapping option ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.
#* Verify that 'Repeats' is 'per face (default)'
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: :File:MaterialsBuildUI1.png.. Verify that the following defaults are set:
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited
#** Verify that 'Rotation' is 0.00
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00
#** Verify that 'Align planar faces' is *not* visible
# UserA: Deselect the box
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)
# UserA: Reselect the box, and 'Edit' it again
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: :File:MaterialsBuildUI1.png.. Verify that the following defaults are set:
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)
#** Verify that 'Rotation' is 0.00
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)
=== Verify build tool editing of texture settings === 
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes 
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.
====Texture Mapping: Diffuse texture, Default mode====
# UserA: Set the Texture panel's dropdowns to read:
#* Materials
#* Texture (diffuse)
#* Mapping: Default
# UserA: Create a new cube prim for use in this test.
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. 
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.
# UserA: Apply the texture, :File:TestDiffuse001.png, to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The "100" image should appear on only one face.
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces
# UserA: Verify that clicking Color box will open the Color Picker floating window. 
# UserA: Verify that color tints selected are additive to the color of the base texture.
# UserA: Verify that using Transparency you can choose transparency level of the object. 
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.
# UserA: Enable Full Bright.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. 
#* (Use World > Sun > to change sun position.)
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.
# UserA: set Horizontal Scale to 2
# UserA: set horizontal offset to 0.5
# UserA: Verify Repeats per Meter value has automatically changed to 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.
# UserA: set Vertical Scale to 2
# UserA: set Vertical Offset to 0.5
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid
# UserA: set Horizontal Scale to 1
# UserA: set Horizontal offset to 0
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode
====Texture Mapping: Diffuse texture, Planar mode====
# Set the Texture panel's dropdowns to read:
#* Materials
#* Texture (diffuse)
#* Mapping: Planar
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture :File:TestDiffuse001.png via the texture picker.
# UserA: Set Horizontal Scale to 4
# UserA: Set Vertical Scale to 6
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0 (yes, this is screwy, but it seems to match the release viewer)
# UserA: set horizontal offset to 0.5
# UserA: set Vertical offset to 0.5
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# Align Planar Faces test TBD
== Verify functionality of 'Alpha mode' option ==
=== No Mask is forced for textures without an alpha channel ===
# UserA, UserB, and UserC: login
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: Set the snapshot as the texture on the box
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'
#* Verify that the 'Mask cutoff' setting is hidden
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque
=== Alpha Blending ===
# UserA, UserB, and UserC: login
# UserA: Upload this alpha-mapped image to your inventory: :File:Maestro_alpha_gradient.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box
# UserA, UserB, and UserC: verify that you see a 'smooth' transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent. This is the expected result when the 'Alpha mode' is set to the default 'Alpha blending' setting
=== Alpha Masking ===
# UserA, UserB, and UserC: login
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): :File:Maestro_alpha_gradient.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.
# UserA: Set the 'Alpha mode' to 'Alpha masking'
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0
# UserA, UserB: verify that the box's texture appears (almost) completely opaque
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)
# UserA: set the 'Mask cutoff' setting to 76
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque
# UserC: verify that you see no change
# UserA: set the 'Mask cutoff' setting to 178
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque
# UserC: verify that you see no change
# UserA: set the 'Mask cutoff' setting to 255
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)
# UserC: verify that you see no change
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI
=== Emissive Mask ===
# UserA, UserB, and UserC: login
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): :File:Kart_screenshot_with_KART_alpha.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section
# UserA: Set the 'Alpha mode' to 'Emissive mask'
#* Verify that the 'Mask cutoff' setting remains hidden
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing word 'KART' in the texture.
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')
=== No Mask (on a texture with an alpha channel) ===
# UserA, UserB, and UserC: login
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): :File:Kart_screenshot_with_KART_alpha.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section
# UserA: Set the 'Alpha mode' to 'None'
#* Verify that the 'Mask cutoff' setting remains hidden
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no word 'KART' should be visible.
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')
== Verify functionality of 'Bumpiness' settings ==
=== Layout of Bumpiness settings ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" 
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup :File:BuildTool_Bumpiness_Shininess.png
# UserA: Verify the following default settings:
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)
#* Verify that the 'Bumpiness' setting is currently 'None'
#* Verify that the 'Mapping' setting is 'Default'
#* Verify that 'Horizontal scale' is 1.0
#* Verify that 'Vertical scale' is 1.0
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)
#* Verify that 'Rotation' is 0.0
#* Verify that 'Horizontal offset' is 0.0
#* Verify that 'Vertical offset' is 0.0
#* Verify that 'Align planar faces' is disabled and cannot be edited
# UserA: Deselect the object
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)
=== Legacy Bumpiness ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" 
# UserA: Verify that you see the following options under the Bumpiness menu:
#* None
#* Brightness
#* Darkness
#* woodgrain
#* bark
#* bricks
#* checker
#* concrete
#* crustytile
#* cutstone
#* discs
#* gravel
#* petridish
#* siding
#* stonetile
#* stucco
#* suction
#* weave
# UserC: Rez a box and edit it with the build tool
# For each of the bumpiness menu options *except* for 'None', do the following:
#* UserA and UserC: select the same bumpiness menu option for your object's texture
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode
=== Normal Map Texture Selection ===
# UserA, UserB, and UserC: login
# UserA: if you don't already have them in your inventory, upload these two textures to SL
#* :File:TestDiffuse001.png
#* :File:TestNormal001.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" 
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker
# UserA: Verify that the Texture preview shows the normal map you selected
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.
# UserC: Verify that you can see the diffuse texture, but no bump map effect
# UserA: From the 'Bumpiness' menu, choose 'None'
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon
# UserA: Verify that the Texture preview shows the normal map you selected
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box
# UserC: Verify that you can see the diffuse texture, but no normal map effect
=== Normal Map Texture mapping ===
====Normal texture, Default mapping====
# Set the Texture panel's dropdowns to read:
#* Materials
#* Bumpiness (normal)
#* Mapping: Default
# UserA: change the prim's texture to :File:TestNormal001.png
# UserA: set Horizontal Scale to 2
# UserA: set horizontal offset to 0.5
# UserA: Verify Repeats per Meter value has automatically changed to 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.
# UserA: set Vertical Scale to 2
# UserA: set Vertical Offset to 0.5
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid
# UserA: set Horizontal Scale to 1
# UserA: set Horizontal offset to 0
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode
====Normal texture, Planar mapping====
# UserA, UserB, UserC: Login
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set :File:TestDiffuse001.png as the diffuse map, via the texture picker.
# UserA: Set the Texture panel's dropdowns to read:
#* Materials
#* Bumpiness (normal)
#* Mapping: Planar
# USerA: Set :File:TestNormal001.png as the normal map, via the texture picker.
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active
# UserA: Set Horizontal Scale to 4
# UserA: Set Vertical Scale to 6
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0 (yes, this is screwy, but it seems to match the release viewer)
# UserA: set horizontal offset to 0.5
# UserA: set Vertical offset to 0.5
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# Align Planar Faces test TBD
== Verify functionality of 'Shininess' settings ==
=== Layout of Shininess settings ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" 
# UserA: Verify that the build tool layout looks like this mockup: :File:BuildtoolSpecular-NoTexture.png
# UserA: Verify the following default settings:
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)
#* Verify that the 'Shininess' setting is currently 'None'
#* Verify that 'Glossiness' is hidden in this mode
#* Verify that 'Environment' is hidden in this mode
#* Verify that the 'Color' is hidden in this mode
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited
#* Verify that 'Vertical scale' is 1.0, and cannot be edited
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited
#* Verify that 'Rotation' is 0.0, and cannot be edited
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited
#* Verify that 'Vertical offset' is 0.0, and cannot be edited
#* Verify that 'Align planar faces' is disabled, and cannot be edited
# UserA: Deselect the object
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)
=== Legacy Shiny ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" 
# UserA: Verify that you see the following options under the Shininess menu:
#* None
#* Low
#* Medium
#* High
# UserC: Rez a box and edit it with the build tool
# Do the following for Shininess settings 'Low', 'Medium', and 'High':
#* UserA and UserC: select the same Shininess menu option for your object's texture
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar
=== Specular Map Texture Selection ===
# UserA, UserB, and UserC: login
# UserA: if you don't already have them in your inventory, upload these two textures to SL
#* :File:TestDiffuse001.png
#* :File:TestSpecular001.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" 
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker
# UserA: Verify that the Texture preview shows the specular map you selected
# UserA: Verify that 'Shininess' is now set to "Use texture"
#* Verify that the floater has new elements, and now looks like :File:BuildtoolSpecular-UseTexture.png
#** Verify that Glossiness has a default value of 51
#** Verify that Environment has a default value of 0
#** Verify that Color defaults to white
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.
#* The stained parts and the scratches should be less shiny than other parts of the texture
# UserC: Verify that you can see the diffuse texture, but no shiny effect
# UserA: From the 'Shininess' menu, choose 'None'
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)
# UserA: Verify that the build tool layout has reverted to the style shown here: :File:BuildtoolSpecular-NoTexture.png
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon
# UserA: Verify that the Texture preview shows the specular map you selected
# UserA: Verify that 'Shininess' becomes set to "Use Texture"
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned
# UserC: Verify that you can see the diffuse texture, but no specular map effect
=== Specular Map Glossiness and Environment ===
# UserA, UserB, and UserC: login
# UserA: if you don't already have them in your inventory, upload these two textures to SL
#* :File:TestDiffuse001.png
#* :File:TestSpecular001.png
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker
# UserA and UserB: verify that you see the object with the specular map applied
# UserC: Verify that you can see the diffuse texture, but no specular map effect
# UserA: Verify these default settings:
#* Glossiness should be 51
#* Environment should be 0
# UserA: Increase the Environment setting to 204
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)
# UserC: verify that you see no change
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0
# UserA: Increase the Glossiness setting to 204
# UserA and UserB: Verify that the specular highlights are now more 'blurred'
# UserC: verify that you see no change
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0
=== Specular Map Texture mapping ===
====Specular texture, Default mapping====
# Set the Texture panel's dropdowns to read:
#* Materials
#* Shininess (specular)
#* Mapping: Default
# UserA: change the prim's texture to :File:TestSpecular001.png
# UserA: set Horizontal Scale to 2
# UserA: set horizontal offset to 0.5
# UserA: Verify Repeats per Meter value has automatically changed to 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.
# UserA: set Vertical Scale to 2
# UserA: set Vertical Offset to 0.5
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid
# UserA: set Horizontal Scale to 1
# UserA: set Horizontal offset to 0
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode
====Normal texture, Planar mapping====
# UserA, UserB, UserC: Login
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set :File:TestDiffuse001.png as the diffuse map, via the texture picker.
# UserA: Set the Texture panel's dropdowns to read:
#* Materials
#* Shiniiness (specular)
#* Mapping: Planar
# USerA: Set :File:TestSpecular001.png as the specular map, via the texture picker.
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active
# UserA: Set Horizontal Scale to 4
# UserA: Set Vertical Scale to 6
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0 (yes, this is screwy, but it seems to match the release viewer)
# UserA: set horizontal offset to 0.5
# UserA: set Vertical offset to 0.5
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# Align Planar Faces test TBD
== Verify functionality of 'Media' settings ==
=== Layout and Default Values of Media Settings ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". 
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png
# UserA: Verify that the following defaults are set:
#* Verify that the Color appears white
#* Verify that Transparency is 0%
#* Verify that Glow is 0.00
#* Verify that 'Full Bright' is disabled
#* Verify that 'Mapping' is 'Default
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited
#** Verify that 'Rotation' is 0.00
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)
=== Adding, and removing, and aligning media ===
# UserA, UserB, and UserC: login
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool
# UserA: Change your selection mode to "Select Face" and select only the top face
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". 
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: :File:BuildToolMediaSettings.png
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face
# UserA: Change the 'Horizontal offset' value to 0.2
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset
# UserA: Click on the 'Align' button to align the website with the box's edges
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges
# UserA: Click on the 'Remove' button to remove the prim media
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged
# UserA: Click on the 'Remove' button to remove the prim media
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture
===Media Texture Mapping ===
====Media, Default mapping====
# UserA, UserB, UserC: login
# UserA: Rez a box, and edit one of its faces with the Build Tool
# UserA: Set the Texture panel's dropdowns to read:
#* Media
#* Mapping: Default
# UserA: Add media to a face on the box, using "http://secondlife.com", as in #Layout_and_Default_Values_of_Media_Settings
# UserA: set Horizontal Scale to 2
# UserA: set horizontal offset to 0.5
# UserA: Verify Repeats per Meter value has automatically changed to 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.
# UserA: set Vertical Scale to 2
# UserA: set Vertical Offset to 0.5
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid
# UserA: set Horizontal Scale to 1
# UserA: set Horizontal offset to 0
# UserA: Verify Repeats per Meter value remains at 4.0
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode
==== Media, Planar mapping====
# UserA, UserB, UserC: Login
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture :File:TestDiffuse001.png via the texture picker.
# UserA: Set the Texture panel's dropdowns to read:
#* Media
#** Mapping: Planar
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active
# UserA: Set Horizontal Scale to 4
# UserA: Set Vertical Scale to 6
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0 (yes, this is screwy, but it seems to match the release viewer)
# UserA: set horizontal offset to 0.5
# UserA: set Vertical offset to 0.5
# UserA: Deselect the box
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.
# UserA: Deselect the box
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.
# Align Planar Faces test TBD
= Materials Loading Test =
This test verifies that the viewer can fetch materials data and render it properly.
== Obtaining Test Objects ==
This test requires using 2 test objects which each contain many materials.
Some prepared test objects can be found at Bug Island. There are 2 test linksets, each containing 50 unique materials:
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible. You can modify the script in the root prim to remove this effect.
== Materials load when rezzed ==
# Log in
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border
# Rez 'MaterialsObject01-50' in the region your avatar is in
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects
== Materials load upon login ==
# Complete the #Materials_load_when_rezzed test first
# Log out
# Login to the location where the objects were rezzed
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner
#* This should be relatively fast, since the viewer should have these textures in its cache
= Materials Rendering Test =
Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water
== Rendering of Legacy Bumpmaps and Shiny ==
Note: this was lifted from Render_Correctness_Test
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23
# Set your shaders and sun position as indicated on the red sphere at that location.
# Verify the spheres render the same as they appear in the picture at that location.
# Continue testing at the 5 stations to the South.
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled
==100% Transparent + Glow==
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23
# Set your shaders as indicated by the red sphere at that location.
# Verify that the sphere glows with ALM enabled.
# Verify that the sphere does not become opaque and black:
#* Under the Advanced->Rendering Types menu uncheck 'Water'
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'
#* The sphere should continue to glow bright white.
Note: When finished be sure to turn the water rendering back on in the Rendering Types menu
==Consistent Lighting vs Solid and Alpha Surfaces==
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23
# The white plane is actually made up of two planes linked together.
# The plane on the left is solid, and the plane on the right has some Transparency %.
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:
#* With Basic Shaders enabled.
#* With Atmospheric Shaders enabled.
#* With Advanced Lighting Model enabled under all Sun Settings:
#** Sunrise
#** Midday
#** Sunset
#** Midnight
==Gamma Consistency w/ Full Bright + Alpha==
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23
# Follow the guidelines stated in the text on the red sphere at that location.
#* The cube with the pink circle should not be bright than the solid pink cube.
#* The cube with the target on it should not darken with ALM enabled.
== Alpha Modes Rendering ==
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42
# Click World -> Sun -> Midday to set the viewer lighting
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object
#* 'Alpha blended' should have a smooth transparency transition
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box
#* 'No Alpha' should be fully opaque
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box
# Verify that the other boxes have not changed their basic appearance 
== Rendering with Normal Maps ==
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46
# Click World -> Sun -> Midday to set the viewer lighting
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side. Each Row includes a different alpha type (labelled by floating text)
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should not have the shiny '001' lettering in the upper-left and lower-right corners.
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Look at the wall of test objects to the East, and confirm these changes:
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them
#* All normal maps are missing
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other. None of them should appear shiny.
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny
== Materials Rendering on HUDs ==
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright). However, some of the new alpha modes should effect rendering of HUD objects.
# Take a copy of 'Materials test HUD', which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background
# Verify that the HUD appears like this screen shot: :File:Materials_test_HUD_appearance.png
#* Verify that no normal or specular maps appear with the '001' pattern
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row
#* Verify that Alpha mode renders correctly
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')
#* Verify that legacy shiny objects appear darker than the others
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced
# Verify that the HUD appears like this screen shot: :File:Materials_test_HUD_appearance.png
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled
== Materials Rendering on Rigged Meshes ==
TODO
== Rendering of Environment and Exponent Masks ==
TODO
Category:QA Portal
Category:Test Scripts