diff options
Diffstat (limited to 'indra/newview/app_settings')
78 files changed, 6234 insertions, 3463 deletions
diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 5f11ed8e22..5f143431de 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -106,6 +106,54 @@ <string>QuitAfterSeconds</string> </map> + <key>logperformance</key> + <map> + <key>desc</key> + <string>Log performance metrics for benchmarking</string> + <key>map-to</key> + <string>LogPerformance</string> + </map> + + <key>logmetrics</key> + <map> + <key>desc</key> + <string>Log metrics for benchmarking</string> + <key>map-to</key> + <string>LogMetrics</string> + </map> + + <key>analyzeperformance</key> + <map> + <key>desc</key> + <string>When used in conjunction with logperformance, analyzes result of log against baseline.</string> + <key>map-to</key> + <string>AnalyzePerformance</string> + </map> + + <key>debugsession</key> + <map> + <key>desc</key> + <string>Run as if RenderDebugGL is TRUE, but log errors until end of session.</string> + <key>map-to</key> + <string>DebugSession</string> + </map> + + <key>replaysession</key> + <map> + <key>desc</key> + <string>After login, replay last recorded session and quit.</string> + <key>map-to</key> + <string>ReplaySession</string> + </map> + + <key>nonotifications</key> + <map> + <key>desc</key> + <string>User will not get any notifications. NOTE: All notifications that occur will get added to ignore file for future runs.</string> + <key>map-to</key> + <string>IgnoreAllNotifications</string> + </map> + <key>rotate</key> <map> <key>map-to</key> @@ -166,6 +214,16 @@ <string>UserLogFile</string> </map> + <key>graphicslevel</key> + <map> + <key>desc</key> + <string>Set the detail level. + 0 - low, 1 - medium, 2 - high, 3 - ultra + </string> + <key>count</key> + <integer>1</integer> + </map> + <key>setdefault</key> <map> <key>desc</key> diff --git a/indra/newview/app_settings/foldertypes.xml b/indra/newview/app_settings/foldertypes.xml new file mode 100644 index 0000000000..0d539177f3 --- /dev/null +++ b/indra/newview/app_settings/foldertypes.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<ensemble_defs> + <ensemble + foldertype_num="27" + xui_name="head" + icon_name="inv_folder_outfit_head.tga" + allowed="hair,eyes" + /> + <ensemble + foldertype_num="28" + xui_name="gloves" + icon_name="inv_folder_outfit_gloves.tga" + allowed="gloves" + /> + <ensemble + foldertype_num="29" + xui_name="jacket" + icon_name="inv_folder_outfit_jacket.tga" + allowed="jacket" + /> + <ensemble + foldertype_num="30" + xui_name="pants" + icon_name="inv_folder_outfit_pants.tga" + allowed="pants,underpants" + /> + <ensemble + foldertype_num="31" + xui_name="shape" + icon_name="inv_folder_outfit_shape.tga" + allowed="shape,skin,hair,eyes" + /> + <ensemble + foldertype_num="32" + xui_name="shoes" + icon_name="inv_folder_outfit_shoes.tga" + allowed="shoes,socks" + /> + <ensemble + foldertype_num="33" + xui_name="shirt" + icon_name="inv_folder_outfit_shirt.tga" + allowed="shirt,undershirt" + /> + <ensemble + foldertype_num="34" + xui_name="skirt" + icon_name="inv_folder_outfit_skirt.tga" + allowed="" + /> + <ensemble + foldertype_num="35" + xui_name="underpants" + icon_name="inv_folder_outfit_underpants.tga" + allowed="underpants" + /> + <ensemble + foldertype_num="36" + xui_name="undershirt" + icon_name="inv_folder_outfit_undershirt.tga" + allowed="undershirt" + /> +</ensemble_defs> diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml new file mode 100644 index 0000000000..e825f13e82 --- /dev/null +++ b/indra/newview/app_settings/ignorable_dialogs.xml @@ -0,0 +1,280 @@ +<?xml version="1.0" ?> +<llsd> +<map> + <key>FirstAppearance</key> + <map> + <key>Comment</key> + <string>Enables FirstAppearance warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstAttach</key> + <map> + <key>Comment</key> + <string>Enables FirstAttach warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstBalanceDecrease</key> + <map> + <key>Comment</key> + <string>Enables FirstBalanceDecrease warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstBalanceIncrease</key> + <map> + <key>Comment</key> + <string>Enables FirstBalanceIncrease warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstBuild</key> + <map> + <key>Comment</key> + <string>Enables FirstBuild warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstDebugMenus</key> + <map> + <key>Comment</key> + <string>Enables FirstDebugMenus warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstFlexible</key> + <map> + <key>Comment</key> + <string>Enables FirstFlexible warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstGoTo</key> + <map> + <key>Comment</key> + <string>Enables FirstGoTo warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstInventory</key> + <map> + <key>Comment</key> + <string>Enables FirstInventory warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstLeftClickNoHit</key> + <map> + <key>Comment</key> + <string>Enables FirstLeftClickNoHit warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstMap</key> + <map> + <key>Comment</key> + <string>Enables FirstMap warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstMedia</key> + <map> + <key>Comment</key> + <string>Enables FirstMedia warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstOverrideKeys</key> + <map> + <key>Comment</key> + <string>Enables FirstOverrideKeys warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstSandbox</key> + <map> + <key>Comment</key> + <string>Enables FirstSandbox warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstSculptedPrim</key> + <map> + <key>Comment</key> + <string>Enables FirstSculptedPrim warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstSit</key> + <map> + <key>Comment</key> + <string>Enables FirstSit warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstStreamingMedia</key> + <map> + <key>Comment</key> + <string>Enables FirstStreamingMedia warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstTeleport</key> + <map> + <key>Comment</key> + <string>Enables FirstTeleport warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstVoice</key> + <map> + <key>Comment</key> + <string>Enables FirstVoice warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>AboutDirectX9</key> + <map> + <key>Comment</key> + <string>Enables AboutDirectX9 warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>BrowserLaunch</key> + <map> + <key>Comment</key> + <string>Enables BrowserLaunch warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>DeedObject</key> + <map> + <key>Comment</key> + <string>Enables DeedObject warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>NewClassified</key> + <map> + <key>Comment</key> + <string>Enables NewClassified warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>QuickTimeInstalled</key> + <map> + <key>Comment</key> + <string>Enables QuickTimeInstalled warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>ReturnToOwner</key> + <map> + <key>Comment</key> + <string>Enables ReturnToOwner warning dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + </map> +</llsd> diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index cd7b533e7a..0805e94b10 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -40,14 +40,14 @@ not_at_rot_target not_at_rot_target():Result of LLRotTarget library function cal money money(key id, integer amount):Triggered when L$ is given to task email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task -attach attach(key id):Triggered when an agent attaches or detaches from agent +attach attach(key id):Triggered when task attaches or detaches from agent dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data moving_start moving_start():Triggered when task begins moving moving_end moving_end():Triggered when task stops moving on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task object_rez object_rez(key id):Triggered when task rezes in another task link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call -changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT) +changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START, CHANGED_MEDIA) remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY) http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL @@ -108,6 +108,7 @@ AGENT_TYPING Returned by llGetAgentInfo if the Agent is typing AGENT_CROUCHING Returned by llGetAgentInfo if the Agent is crouching AGENT_BUSY Returned by llGetAgentInfo if the Agent is busy AGENT_ALWAYS_RUN Returned by llGetAgentInfo if the Agent has 'Always Run' enabled +AGENT_AUTOPILOT Returned by llGetAgentInfo if the Agent is under autopilot control PSYS_PART_FLAGS PSYS_PART_START_COLOR @@ -267,8 +268,8 @@ ATTACH_LHIP Passed to llAttachToAvatar to attach task to left hip ATTACH_LULEG Passed to llAttachToAvatar to attach task to left upper leg ATTACH_LLLEG Passed to llAttachToAvatar to attach task to left lower leg ATTACH_BELLY Passed to llAttachToAvatar to attach task to belly -ATTACH_RPEC Passed to llAttachToAvatar to attach task to right pectoral -ATTACH_LPEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_LEFT_PEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_RIGHT_PEC Passed to llAttachToAvatar to attach task to right pectoral LAND_LEVEL Passed to llModifyLand to level terrain LAND_RAISE Passed to llModifyLand to raise terrain @@ -319,6 +320,7 @@ CHANGED_OWNER Parameter of changed event handler used to indicate change to tas CHANGED_REGION Parameter of changed event handler used to indicate the region has changed CHANGED_TELEPORT Parameter of changed event handler used to indicate teleport has completed CHANGED_REGION_START Parameter of changed event handler used to indicate the region has been restarted +CHANGED_MEDIA Parameter of changed event handler used to indicate that media has changed on a face of the task TYPE_INTEGER Indicates that the list entry is holding an integer TYPE_FLOAT Indicates that the list entry is holding an float @@ -457,6 +459,7 @@ PARCEL_FLAG_ALLOW_LANDMARK Used with llGetParcelFlags to find if a parcel allo PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects +PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS Used with llGetParcelFlags to find if a parcel allows group members or objects to create objects PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list @@ -507,17 +510,59 @@ CLICK_ACTION_PAY Used with llSetClickAction to set pay as the default act CLICK_ACTION_OPEN Used with llSetClickAction to set open as the default action when object is clicked CLICK_ACTION_PLAY Used with llSetClickAction to set play as the default action when object is clicked CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked +CLICK_ACTION_ZOOM Used with llSetClickAction to set zoom in as the default action when object is clicked TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid. TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid. TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid. +PRIM_MEDIA_ALT_IMAGE_ENABLE Used with ll{Get,Set}PrimMediaParams to enable the default alt image for media +PRIM_MEDIA_CONTROLS Used with ll{Get,Set}PrimMediaParams to determine the controls shown for media +PRIM_MEDIA_CURRENT_URL Used with ll{Get,Set}PrimMediaParams to navigate/access the current URL +PRIM_MEDIA_HOME_URL Used with ll{Get,Set}PrimMediaParams to access the home URL +PRIM_MEDIA_AUTO_LOOP Used with ll{Get,Set}PrimMediaParams to determine if media should auto-loop (if applicable) +PRIM_MEDIA_AUTO_PLAY Used with ll{Get,Set}PrimMediaParams to determine if media should start playing as soon as it is created +PRIM_MEDIA_AUTO_SCALE Used with ll{Get,Set}PrimMediaParams to determine if media should scale to fit the face it is on +PRIM_MEDIA_AUTO_ZOOM Used with ll{Get,Set}PrimMediaParams to determine if the user would zoom in when viewing media +PRIM_MEDIA_FIRST_CLICK_INTERACT Used with ll{Get,Set}PrimMediaParams to determine whether the user interacts with media or not when she first clicks it (versus selection) +PRIM_MEDIA_WIDTH_PIXELS Used with ll{Get,Set}PrimMediaParams to access the media's width in pixels +PRIM_MEDIA_HEIGHT_PIXELS Used with ll{Get,Set}PrimMediaParams to access the media's height in pixels +PRIM_MEDIA_WHITELIST_ENABLE Used with ll{Get,Set}PrimMediaParams to determine if the domain whitelist is enabled +PRIM_MEDIA_WHITELIST Used with ll{Get,Set}PrimMediaParams to access the media's list of allowable URL prefixes to navigate to +PRIM_MEDIA_PERMS_INTERACT Used with ll{Get,Set}PrimMediaParams to determine the permissions for who can interact with the media +PRIM_MEDIA_PERMS_CONTROL Used with ll{Get,Set}PrimMediaParams to determine the permissions for who has controls +PRIM_MEDIA_PARAM_MAX The value of the largest media param + +PRIM_MEDIA_CONTROLS_STANDARD Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_CONTROLS value meaning "standard controls" +PRIM_MEDIA_CONTROLS_MINI Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_CONTROLS value meaning "mini controls" + +PRIM_MEDIA_PERM_NONE Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, no permissions +PRIM_MEDIA_PERM_OWNER Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, owner permissions +PRIM_MEDIA_PERM_GROUP Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, group permissions +PRIM_MEDIA_PERM_ANYONE Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, anyone has permissions + +PRIM_MEDIA_MAX_URL_LENGTH Used with ll{Get,Set}PrimMediaParams, the maximum length of PRIM_MEDIA_CURRENT_URL or PRIM_MEDIA_HOME_URL +PRIM_MEDIA_MAX_WHITELIST_SIZE Used with ll{Get,Set}PrimMediaParams, the maximum length, in bytes, of PRIM_MEDIA_WHITELIST +PRIM_MEDIA_MAX_WHITELIST_COUNT Used with ll{Get,Set}PrimMediaParams, the maximum number of items allowed in PRIM_MEDIA_WHITELIST +PRIM_MEDIA_MAX_WIDTH_PIXELS Used with ll{Get,Set}PrimMediaParams, the maximum width allowed in PRIM_MEDIA_WIDTH_PIXELS +PRIM_MEDIA_MAX_HEIGHT_PIXELS Used with ll{Get,Set}PrimMediaParams, the maximum width allowed in PRIM_MEDIA_HEIGHT_PIXELS + +STATUS_OK Result of function call was success +STATUS_MALFORMED_PARAMS Function was called with malformed params +STATUS_TYPE_MISMATCH Argument(s) passed to function had a type mismatch +STATUS_BOUNDS_ERROR Argument(s) passed to function had a bounds error +STATUS_NOT_FOUND Object or other item was not found +STATUS_NOT_SUPPORTED Feature not supported +STATUS_INTERNAL_ERROR An internal error occurred +STATUS_WHITELIST_FAILED URL failed to pass whitelist + # string constants [word .1, .3, .5] NULL_KEY Indicates an empty key EOF Indicates the last line of a notecard was read TEXTURE_BLANK UUID for the "Blank" texture -TEXTURE_DEFAULT UUID for the "Default Media" texture +TEXTURE_DEFAULT Alias for TEXTURE_PLYWOOD +TEXTURE_MEDIA UUID for the "Default Media" texture TEXTURE_PLYWOOD UUID for the default "Plywood" texture TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index a49ccb77b4..d7bb64ce8a 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -40,7 +40,6 @@ </array> <key>tags</key> <array> - <string>ShaderLoading</string> </array> </map> </array> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7ae92129dc..093e4f4894 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8,7 +8,7 @@ <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>S32</string> <key>Value</key> <real>300.0</real> </map> @@ -23,37 +23,16 @@ <key>Value</key> <integer>0</integer> </map> - <key>UserChatColor</key> - <map> - <key>Comment</key> - <string>Color of your chat messages</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>AgentChatColor</key> + <key>AgentPause</key> <map> <key>Comment</key> - <string>Color of chat messages from other residents</string> + <string>Ask the simulator to stop updating the agent while enabled</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> - <string>Color4</string> + <string>Boolean</string> <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> + <integer>0</integer> </map> <key>AlertedUnsupportedHardware</key> <map> @@ -66,17 +45,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>AllowIdleAFK</key> - <map> - <key>Comment</key> - <string>Automatically set AFK (away from keyboard) mode when idle</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>AllowMultipleViewers</key> <map> <key>Comment</key> @@ -154,7 +122,7 @@ <key>Value</key> <integer>1</integer> </map> - <key>ArrowKeysMoveAvatar</key> + <key>ArrowKeysAlwaysMove</key> <map> <key>Comment</key> <string>While cursor is in chat entry box, arrow keys still control your avatar</string> @@ -163,7 +131,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>AskedAboutCrashReports</key> <map> @@ -198,17 +166,6 @@ <key>Value</key> <real>0.5</real> </map> - <key>AudioLevelDistance</key> - <map> - <key>Comment</key> - <string>Scale factor for audio engine (multiple of world scale, 2.0 = audio falls off twice as fast)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>1.0</real> - </map> <key>AudioLevelDoppler</key> <map> <key>Comment</key> @@ -308,29 +265,51 @@ <key>Value</key> <real>0.5</real> </map> - <key>AudioStreamingMusic</key> + <key>AudioLevelWind</key> <map> <key>Comment</key> - <string>Enable streaming audio</string> + <string>Audio level of wind noise when standing still</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + <key>AudioStreamingMedia</key> + <map> + <key>Comment</key> + <string>Enable streaming</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>AudioStreamingVideo</key> + <key>AudioStreamingMusic</key> <map> <key>Comment</key> - <string>Enable streaming video</string> + <string>Enable streaming audio</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>AutoAcceptNewInventory</key> + <key>AuditTexture</key> + <map> + <key>Comment</key> + <string>Enable texture auditting.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>AutoAcceptNewInventory</key> <map> <key>Comment</key> <string>Automatically accept new notecards/textures/landmarks</string> @@ -418,6 +397,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>AvalinePhoneSeparator</key> + <map> + <key>Comment</key> + <string>Separator of phone parts to have Avaline numbers human readable in Voice Control Panel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>-</string> + </map> <key>AvatarAxisDeadZone0</key> <map> <key>Comment</key> @@ -594,22 +584,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>BackgroundChatColor</key> - <map> - <key>Comment</key> - <string>Color of chat bubble background</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> <key>BackgroundYieldTime</key> <map> <key>Comment</key> @@ -621,42 +595,10 @@ <key>Value</key> <integer>40</integer> </map> - <key>BackwardBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>45</integer> - <integer>29</integer> - <integer>66</integer> - <integer>4</integer> - </array> - </map> - <key>BasicHelpRect</key> - <map> - <key>Comment</key> - <string>Rectangle for help window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>404</integer> - <integer>467</integer> - <integer>0</integer> - </array> - </map> - <key>BeaconAlwaysOn</key> + <key>BottomPanelNew</key> <map> <key>Comment</key> - <string>Beacons / highlighting always on</string> + <string>Enable the new bottom panel</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -873,17 +815,6 @@ <key>Value</key> <real>1.0</real> </map> - <key>BuildBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>BuildFeathering</key> <map> <key>Comment</key> @@ -972,17 +903,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>BulkChangeIncludeLandmarks</key> - <map> - <key>Comment</key> - <string>Bulk permission changes affect landmarks</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>BulkChangeIncludeNotecards</key> <map> <key>Comment</key> @@ -1124,7 +1044,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>10</integer> + <integer>4</integer> </map> <key>ButtonHeight</key> <map> @@ -1135,7 +1055,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>20</integer> + <integer>23</integer> </map> <key>ButtonHeightSmall</key> <map> @@ -1146,20 +1066,31 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>16</integer> + <integer>23</integer> </map> - <key>ButtonVPad</key> + <key>CacheLocation</key> <map> <key>Comment</key> - <string>Default vertical spacing between buttons (pixels)</string> + <string>Controls the location of the local disk cache</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>S32</string> + <string>String</string> <key>Value</key> - <integer>1</integer> + <string /> </map> - <key>CacheLocation</key> + <key>CacheLocationTopFolder</key> + <map> + <key>Comment</key> + <string>Controls the top folder location of the local disk cache</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string /> + </map> + <key>CacheLocationTopFolder</key> <map> <key>Comment</key> <string>Controls the location of the local disk cache</string> @@ -1169,7 +1100,7 @@ <string>String</string> <key>Value</key> <string /> - </map> + </map> <key>CacheSize</key> <map> <key>Comment</key> @@ -1179,7 +1110,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <integer>500</integer> + <integer>512</integer> </map> <key>CacheValidateCounter</key> <map> @@ -1199,9 +1130,9 @@ <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>S32</string> <key>Value</key> - <integer>1</integer> + <integer>5</integer> </map> <key>CameraAngle</key> <map> @@ -1240,10 +1171,10 @@ <real>6.0</real> </array> </map> - <key>CameraOffsetDefault</key> + <key>CameraOffsetRearView</key> <map> <key>Comment</key> - <string>Default camera offset from avatar</string> + <string>Initial camera offset from avatar in Rear View</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -1255,6 +1186,36 @@ <real>0.75</real> </array> </map> + <key>CameraOffsetFrontView</key> + <map> + <key>Comment</key> + <string>Initial camera offset from avatar in Front View</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>2.2</real> + <real>0.0</real> + <real>0.0</real> + </array> + </map> + <key>CameraOffsetGroupView</key> + <map> + <key>Comment</key> + <string>Initial camera offset from avatar in Group View</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>-1.0</real> + <real>0.7</real> + <real>0.5</real> + </array> + </map> <key>CameraOffsetScale</key> <map> <key>Comment</key> @@ -1292,6 +1253,17 @@ <key>Value</key> <real>1.0</real> </map> + <key>CameraPreset</key> + <map> + <key>Comment</key> + <string>Preset camera position - view (0 - rear, 1 - front, 2 - group)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>0</integer> + </map> <key>ChatBarStealsFocus</key> <map> <key>Comment</key> @@ -1391,21 +1363,16 @@ <key>Value</key> <integer>1</integer> </map> - <key>ChatterboxRect</key> + <key>ChatWindow</key> <map> <key>Comment</key> - <string>Rectangle for chatterbox window</string> + <string>Show chat in multiple windows(by default) or in one multi-tabbed window(requires restart)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>S32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>350</integer> - <integer>0</integer> - </array> + <integer>0</integer> </map> <key>CheesyBeacon</key> <map> @@ -1421,7 +1388,7 @@ <key>ClientSettingsFile</key> <map> <key>Comment</key> - <string>Persisted client settings file name (per install).</string> + <string>Client settings file name (per install).</string> <key>Persist</key> <integer>0</integer> <key>Type</key> @@ -1497,545 +1464,17 @@ <string /> </array> </map> - <key>ColorPaletteEntry01</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry02</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.5</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry03</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry04</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.5</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry05</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.5</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry06</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.5</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry07</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.0</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry08</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.0</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry09</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.5</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry10</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.25</real> - <real>0.25</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry11</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.5</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry12</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.25</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry13</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry14</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.25</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry15</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry16</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry17</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry18</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.75</real> - <real>0.75</real> - <real>0.75</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry19</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry20</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry21</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>1.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry22</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry23</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry24</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry25</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry26</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>1.0</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry27</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry28</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.5</real> - <real>0.5</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry29</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>0.5</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry30</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>0.5</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry31</key> + <key>CompressSnapshotsToDisk</key> <map> <key>Comment</key> - <string>Color picker palette entry</string> + <string>Compress snapshots saved to disk (Using JPEG 2000)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColorPaletteEntry32</key> - <map> - <key>Comment</key> - <string>Color picker palette entry</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>ColumnHeaderDropDownDelay</key> - <map> - <key>Comment</key> - <string>Time in seconds of mouse click before column header shows sort options list</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>0.300000011921</real> - </map> - <key>CompileOutputRect</key> - <map> - <key>Comment</key> - <string>Rectangle for script Recompile Everything output window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> + <integer>0</integer> + </map> <key>ConnectAsGod</key> <map> <key>Comment</key> @@ -2171,7 +1610,7 @@ <key>Cursor3D</key> <map> <key>Comment</key> - <string>Tread Joystick values as absolute positions (not deltas).</string> + <string>Treat Joystick values as absolute positions (not deltas).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -2223,6 +1662,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>DebugPluginDisableTimeout</key> + <map> + <key>Comment</key> + <string>Disable the code which watches for plugins that are crashed or hung</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>DebugShowColor</key> <map> <key>Comment</key> @@ -2267,7 +1717,18 @@ <key>Value</key> <integer>0</integer> </map> - <key>DebugStatModeFPS</key> + <key>DebugShowXUINames</key> + <map> + <key>Comment</key> + <string>Show tooltips with XUI path to widget</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>DebugStatModeFPS</key> <map> <key>Comment</key> <string>Mode of stat in Statistics floater</string> @@ -2894,6 +2355,17 @@ <key>Value</key> <string>89556747-24cb-43ed-920b-47caed15465f</string> </map> + <key>DefaultUploadCost</key> + <map> + <key>Comment</key> + <string>Default sound/image/file upload cost(in case economy data is not available).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>10</integer> + </map> <key>DisableCameraConstraints</key> <map> <key>Comment</key> @@ -3136,32 +2608,27 @@ <key>Value</key> <integer>0</integer> </map> - <key>EffectColor</key> + <key>EnableRippleWater</key> <map> <key>Comment</key> - <string>Particle effects color</string> + <string>Whether to use ripple water shader or not</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Color4</string> + <string>Boolean</string> <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> + <integer>1</integer> </map> - <key>EnableRippleWater</key> + <key>EnableTextureAtlas</key> <map> <key>Comment</key> - <string>Whether to use ripple water shader or not</string> + <string>Whether to use texture atlas or not</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>EnableVoiceChat</key> <map> @@ -3339,17 +2806,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>FirstPersonBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>FirstRunThisInstall</key> <map> <key>Comment</key> @@ -3361,48 +2817,38 @@ <key>Value</key> <integer>1</integer> </map> - <key>FixedWeather</key> + <key>FirstSelectedDisabledPopups</key> <map> <key>Comment</key> - <string>Weather effects do not change over time</string> + <string>Return false if there is not disabled popup selected in the list of floater preferences popups</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> - <key>FloaterAboutRect</key> + </map> + <key>FirstSelectedEnabledPopups</key> <map> <key>Comment</key> - <string>Rectangle for About window</string> + <string>Return false if there is not enable popup selected in the list of floater preferences popups</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>440</integer> - <integer>470</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterActiveSpeakersRect</key> + <integer>0</integer> + </map> + <key>FixedWeather</key> <map> <key>Comment</key> - <string>Rectangle for active speakers window</string> + <string>Weather effects do not change over time</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>300</integer> - <integer>250</integer> - <integer>0</integer> - </array> + <integer>0</integer> </map> <key>FloaterActiveSpeakersSortAscending</key> <map> @@ -3426,618 +2872,95 @@ <key>Value</key> <string>speaking_status</string> </map> - <key>FloaterAdvancedSkyRect</key> + <key>FloaterMapNorth</key> <map> <key>Comment</key> - <string>Rectangle for Advanced Sky Editor</string> + <string>Floater Map North Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>220</integer> - <integer>700</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterAdvancedWaterRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Advanced Water Editor</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>240</integer> - <integer>700</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterAudioVolumeRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Audio Volume window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>440</integer> - <integer>470</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterBeaconsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for beacon and highlight controls</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>200</integer> - <integer>250</integer> - <integer>250</integer> - <integer>200</integer> - </array> - </map> - <key>FloaterBuildOptionsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for build options window.</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterBumpRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Bumps/Hits window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>180</integer> - <integer>400</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterBuyContentsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Buy Contents window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>250</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterBuyRect</key> - <map> - <key>Comment</key> - <string>Rectangle for buy window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>250</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterCameraRect3</key> - <map> - <key>Comment</key> - <string>Rectangle for camera control window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>64</integer> - <integer>176</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterChatRect</key> - <map> - <key>Comment</key> - <string>Rectangle for chat history</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>172</integer> - <integer>500</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterClothingRect</key> - <map> - <key>Comment</key> - <string>Rectangle for clothing window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>480</integer> - <integer>320</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterContactsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for chat history</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>390</integer> - <integer>395</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterCustomizeAppearanceRect</key> - <map> - <key>Comment</key> - <string>Rectangle for avatar customization window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>540</integer> - <integer>494</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterDayCycleRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Day Cycle Editor</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>646</integer> - <integer>275</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterEnvRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Environment Editor</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>150</integer> - <integer>600</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterFindRect2</key> - <map> - <key>Comment</key> - <string>Rectangle for Find window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>570</integer> - <integer>780</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterFriendsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for friends window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>250</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterGestureRect2</key> - <map> - <key>Comment</key> - <string>Rectangle for gestures window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>465</integer> - <integer>350</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterHUDRect2</key> - <map> - <key>Comment</key> - <string>Rectangle for HUD Floater window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> -<!-- NOTE: Height and width must match values in settings.xml for - FloaterHUDRect because this floater is resized to those values - in LLViewerWindow initialization. JC --> - <array> - <integer>0</integer> - <integer>292</integer> - <integer>362</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterHtmlRect</key> - <map> - <key>Comment</key> - <string>Rectangle for HTML window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>100</integer> - <integer>460</integer> - <integer>370</integer> - <integer>100</integer> - </array> - </map> - <key>FloaterIMRect</key> - <map> - <key>Comment</key> - <string>Rectangle for IM window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>160</integer> - <integer>500</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterInspectRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Object Inspect window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>400</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterInventoryRect</key> - <map> - <key>Comment</key> - <string>Rectangle for inventory window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterJoystickRect</key> - <map> - <key>Comment</key> - <string>Rectangle for joystick controls window.</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - </array> + <string>N</string> </map> - <key>FloaterLagMeter</key> + <key>FloaterMapNorthEast</key> <map> <key>Comment</key> - <string>Rectangle for lag meter</string> + <string>Floater Map North-East Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>142</integer> - <integer>350</integer> - <integer>0</integer> - </array> + <string>NE</string> </map> - <key>FloaterLandRect5</key> + <key>FloaterMapNorthWest</key> <map> <key>Comment</key> - <string>Rectangle for About Land window</string> + <string>Floater Map North-West Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>370</integer> - <integer>460</integer> - <integer>0</integer> - </array> + <string>NW</string> </map> - <key>FloaterLandmarkRect</key> + <key>FloaterMapEast</key> <map> <key>Comment</key> - <string>Rectangle for landmark picker</string> + <string>Floater Map East Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>290</integer> - <integer>310</integer> - <integer>0</integer> - </array> + <string>E</string> </map> - <key>FloaterMediaRect</key> + <key>FloaterMapWest</key> <map> <key>Comment</key> - <string>Rectangle for media browser window</string> + <string>Floater Map West Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>16</integer> - <integer>650</integer> - <integer>600</integer> - <integer>128</integer> - </array> + <string>W</string> </map> - <key>FloaterMiniMapRect</key> + <key>FloaterMapSouth</key> <map> <key>Comment</key> - <string>Rectangle for world map</string> + <string>Floater Map South Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>225</integer> - <integer>200</integer> - <integer>0</integer> - </array> + <string>S</string> </map> - <key>FloaterMoveRect2</key> + <key>FloaterMapSouthEast</key> <map> <key>Comment</key> - <string>Rectangle for avatar control window</string> + <string>Floater Map South-East Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>58</integer> - <integer>135</integer> - <integer>0</integer> - </array> + <string>SE</string> </map> - <key>FloaterMuteRect3</key> + <key>FloaterMapSouthWest</key> <map> <key>Comment</key> - <string>Rectangle for mute window</string> + <string>Floater Map South-West Label</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>String</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>300</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <string>SW</string> </map> - <key>FloaterObjectIMInfo</key> - <map> - <key>Comment</key> - <string>Rectangle for floater object im info windows</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>300</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterOpenObjectRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Open Object window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>350</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterPayRectB</key> - <map> - <key>Comment</key> - <string>Rectangle for pay window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>150</integer> - <integer>400</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterPermPrefsRect</key> - <map> - <key>Comment</key> - <string>Rectangle for initial permissions preferences</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>200</integer> - <integer>250</integer> - <integer>250</integer> - <integer>200</integer> - </array> - </map> - <key>FloaterRegionInfo</key> - <map> - <key>Comment</key> - <string>Rectangle for region info window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>512</integer> - <integer>480</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterScriptDebugRect</key> - <map> - <key>Comment</key> - <string>Rectangle for Script Error/Debug window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>130</integer> - <integer>450</integer> - <integer>0</integer> - </array> - </map> - <key>FloaterSnapshotRect</key> - <map> - <key>Comment</key> - <string>Rectangle for snapshot window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>200</integer> - <integer>200</integer> - <integer>400</integer> - </array> - </map> <key>FloaterStatisticsRect</key> <map> <key>Comment</key> @@ -4054,44 +2977,6 @@ <integer>0</integer> </array> </map> - <key>FloaterViewBottom</key> - <map> - <key>Comment</key> - <string>[DO NOT MODIFY] Controls layout of floating windows within SL window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>-1</integer> - </map> - <key>FloaterWorldMapRect2</key> - <map> - <key>Comment</key> - <string>Rectangle for world map window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - <integer>0</integer> - </array> - </map> - <key>FlyBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>FlycamAbsolute</key> <map> <key>Comment</key> @@ -4290,14 +3175,14 @@ <key>Value</key> <integer>0</integer> </map> - <key>FocusOffsetDefault</key> + <key>FocusOffsetRearView</key> <map> <key>Comment</key> - <string>Default focus point offset relative to avatar (x-axis is forward)</string> + <string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Vector3</string> + <string>Vector3D</string> <key>Value</key> <array> <real>1.0</real> @@ -4305,6 +3190,36 @@ <real>1.0</real> </array> </map> + <key>FocusOffsetFrontView</key> + <map> + <key>Comment</key> + <string>Initial focus point offset relative to avatar for the camera preset Front View</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3D</string> + <key>Value</key> + <array> + <real>0.0</real> + <real>0.0</real> + <real>0.0</real> + </array> + </map> + <key>FocusOffsetGroupView</key> + <map> + <key>Comment</key> + <string>Initial focus point offset relative to avatar for the camera preset Group View</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3D</string> + <key>Value</key> + <array> + <real>1.5</real> + <real>0.7</real> + <real>1.0</real> + </array> + </map> <key>FocusPosOnLogout</key> <map> <key>Comment</key> @@ -4496,22 +3411,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>ForwardBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>45</integer> - <integer>54</integer> - <integer>66</integer> - <integer>29</integer> - </array> - </map> <key>FreezeTime</key> <map> <key>Comment</key> @@ -4523,17 +3422,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>FullScreen</key> - <map> - <key>Comment</key> - <string>Run SL in fullscreen mode</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>FullScreenAspectRatio</key> <map> <key>Comment</key> @@ -4675,45 +3563,51 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>400</integer> + <integer>305</integer> </map> - <key>HTMLLinkColor</key> + <key>HelpUseLocal</key> <map> <key>Comment</key> - <string>Color of hyperlinks</string> + <string>If set, always use this for help: skins/default/html/[LANGUAGE]/help-offline/index.html</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> - <string>Color4</string> + <string>Boolean</string> <key>Value</key> - <array> - <real>0.600000023842</real> - <real>0.600000023842</real> - <real>1.0</real> - <real>1.0</real> - </array> + <integer>0</integer> </map> - <key>HelpHomeURL</key> + <key>HelpURLFormat</key> <map> <key>Comment</key> - <string>URL of initial help page</string> + <string>URL pattern for help page; arguments will be encoded; see llviewerhelp.cpp:buildHelpURL for arguments</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>help/index.html</string> + <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string> </map> - <key>HelpLastVisitedURL</key> + <key>HomeSidePanelURL</key> <map> <key>Comment</key> - <string>URL of last help page, will be shown next time help is accessed</string> + <string>URL for the web page to display in the Home side panel</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>help/index.html</string> + <string>http://lecs.viewer-sidebar.secondlife.com.s3.amazonaws.com/sidebar.html?p=[AUTH_TOKEN]&lang=[LANGUAGE]&channel=[CHANNEL]&version=[VERSION]&major=[VERSION_MAJOR]&minor=[VERSION_MINOR]</string> + </map> + <key>SearchURL</key> + <map> + <key>Comment</key> + <string>URL for Search website, displayed in the Find floater</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>http://search.secondlife.com/viewer/[CATEGORY]?q=[QUERY]&p=[AUTH_TOKEN]&r=[MATURITY]&lang=[LANGUAGE]&g=[GODLIKE]&sid=[SESSION_ID]&rid=[REGION_ID]&pid=[PARCEL_ID]</string> </map> <key>HighResSnapshot</key> <map> @@ -4726,22 +3620,17 @@ <key>Value</key> <integer>0</integer> </map> - <key>HtmlFindRect</key> + <key>HideSelectedObjects</key> <map> <key>Comment</key> - <string>Rectangle for HTML find window</string> + <string>Hide Selected Objects</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>16</integer> - <integer>650</integer> - <integer>600</integer> - <integer>128</integer> - </array> - </map> + <integer>0</integer> + </map> <key>HtmlHelpLastPage</key> <map> <key>Comment</key> @@ -4753,58 +3642,21 @@ <key>Value</key> <string /> </map> - <key>HtmlHelpRect</key> + <key>IMShowTimestamps</key> <map> <key>Comment</key> - <string>Rectangle for HTML help window</string> + <string>Show timestamps in IM</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>16</integer> - <integer>650</integer> - <integer>600</integer> - <integer>128</integer> - </array> - </map> - <key>HtmlReleaseMessage</key> - <map> - <key>Comment</key> - <string>Rectangle for HTML Release Message Floater window</string> - <key>Persist</key> <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>46</integer> - <integer>520</integer> - <integer>400</integer> - <integer>128</integer> - </array> </map> - <key>IMChatColor</key> + <key>IMShowControlPanel</key> <map> <key>Comment</key> - <string>Color of instant messages from other residents</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - </map> - <key>IMInChatConsole</key> - <map> - <key>Comment</key> - <string>Copy IM into background chat console</string> + <string>Show IM Control Panel</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -4812,17 +3664,17 @@ <key>Value</key> <integer>1</integer> </map> - <key>IMShowTimestamps</key> + <key>IgnoreAllNotifications</key> <map> <key>Comment</key> - <string>Show timestamps in IM</string> + <string>Ignore all notifications so we never need user input on them.</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> - </map> + <integer>0</integer> + </map> <key>IgnorePixelDepth</key> <map> <key>Comment</key> @@ -4856,6 +3708,28 @@ <key>Value</key> <real>0.0</real> </map> + <key>InspectorFadeTime</key> + <map> + <key>Comment</key> + <string>Fade out timing for inspectors</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + <key>InspectorShowTime</key> + <map> + <key>Comment</key> + <string>Stay timing for inspectors</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>3.0</real> + </map> <key>InstallLanguage</key> <map> <key>Comment</key> @@ -5032,6 +3906,17 @@ <key>Value</key> <string /> </map> + <key>JoystickMouselookYaw</key> + <map> + <key>Comment</key> + <string>Pass joystick yaw to scripts in Mouselook.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>JoystickRunThreshold</key> <map> <key>Comment</key> @@ -5087,22 +3972,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>LSLHelpRect</key> - <map> - <key>Comment</key> - <string>Rectangle for LSL help window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>400</integer> - <integer>0</integer> - </array> - </map> <key>LSLHelpURL</key> <map> <key>Comment</key> @@ -5191,6 +4060,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>LastMediaSettingsTab</key> + <map> + <key>Comment</key> + <string>Last selected tab in media settings window</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>0</integer> + </map> <key>LastRunVersion</key> <map> <key>Comment</key> @@ -5344,7 +4224,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>LipSyncOoh</key> <map> @@ -5390,7 +4270,29 @@ <key>Value</key> <integer>0</integer> </map> - <key>LogMessages</key> + <key>LoginSRVTimeout</key> + <map> + <key>Comment</key> + <string>Duration in seconds of the login SRV request timeout</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> + <key>LoginSRVPump</key> + <map> + <key>Comment</key> + <string>Name of the message pump that handles SRV request</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>LLAres</string> + </map> + <key>LogMessages</key> <map> <key>Comment</key> <string>Log network traffic</string> @@ -5412,16 +4314,16 @@ <key>Value</key> <integer>0</integer> </map> - <key>LoginLastLocation</key> + <key>LoginLocation</key> <map> <key>Comment</key> <string>Login at same location you last logged out</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>String</string> <key>Value</key> - <integer>1</integer> + <string>last</string> </map> <key>LoginPage</key> <map> @@ -5621,7 +4523,51 @@ <key>Value</key> <integer>0</integer> </map> - <key>MemoryLogFrequency</key> + <key>MediaControlFadeTime</key> + <map> + <key>Comment</key> + <string>Amount of time (in seconds) that the media control fades</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.5</real> + </map> + <key>MediaControlTimeout</key> + <map> + <key>Comment</key> + <string>Amount of time (in seconds) for media controls to fade with no mouse activity</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>3.0</real> + </map> + <key>MediaOnAPrimUI</key> + <map> + <key>Comment</key> + <string>Whether or not to show the "link sharing" UI</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>MediaPerformanceManagerDebug</key> + <map> + <key>Comment</key> + <string>Whether to show debug data for the media performance manager in the nearby media list.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>MemoryLogFrequency</key> <map> <key>Comment</key> <string>Seconds between display of Memory in log (0 for never)</string> @@ -5632,6 +4578,17 @@ <key>Value</key> <real>600.0</real> </map> + <key>MemProfiling</key> + <map> + <key>Comment</key> + <string>You want to use tcmalloc's memory profiling options.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MenuAccessKeyTime</key> <map> <key>Comment</key> @@ -5676,6 +4633,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>MiniMapPrimMaxRadius</key> + <map> + <key>Comment</key> + <string>Radius of the largest prim to show on the MiniMap. Increasing beyond 256 may cause client lag.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>256.0</real> + </map> <key>MiniMapRotate</key> <map> <key>Comment</key> @@ -5690,7 +4658,7 @@ <key>MiniMapScale</key> <map> <key>Comment</key> - <string>Miniature world map zoom levle (pixels per region)</string> + <string>Miniature world map zoom level (pixels per region)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -5731,49 +4699,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>MouselookBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>MoveDownBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>91</integer> - <integer>29</integer> - <integer>116</integer> - <integer>4</integer> - </array> - </map> - <key>MoveUpBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>91</integer> - <integer>54</integer> - <integer>116</integer> - <integer>29</integer> - </array> - </map> <key>MuteAmbient</key> <map> <key>Comment</key> @@ -5860,8 +4785,19 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> + <key>MyOutfitsAutofill</key> + <map> + <key>Comment</key> + <string>Always autofill My Outfits from library when empty (else happens just once).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>NearMeRange</key> <map> <key>Comment</key> @@ -5871,7 +4807,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <integer>20</integer> + <integer>130</integer> </map> <key>NextOwnerCopy</key> <map> @@ -5917,6 +4853,17 @@ <key>Value</key> <string /> </map> + <key>NewCacheLocationTopFolder</key> + <map> + <key>Comment</key> + <string>Change the top folder location of the local disk cache to this</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string /> + </map> <key>NextLoginLocation</key> <map> <key>Comment</key> @@ -5983,43 +4930,160 @@ <key>Value</key> <integer>0</integer> </map> - <key>NotecardEditorRect</key> + <key>NotifyBoxHeight</key> <map> <key>Comment</key> - <string>Rectangle for notecard editor</string> + <string>Height of notification messages</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>S32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>400</integer> - <integer>0</integer> - </array> + <integer>200</integer> </map> - <key>NotifyBoxHeight</key> + <key>NotifyBoxWidth</key> <map> <key>Comment</key> - <string>Height of notification messages</string> + <string>Width of notification messages</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>S32</string> <key>Value</key> - <integer>200</integer> + <integer>305</integer> </map> - <key>NotifyBoxWidth</key> + <key>NotificationToastLifeTime</key> <map> <key>Comment</key> - <string>Width of notification messages</string> + <string>Number of seconds while a notification toast exists</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>5</integer> + </map> + <key>NotificationTipToastLifeTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a notification tip toast exist</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>S32</string> <key>Value</key> - <integer>350</integer> + <integer>10</integer> + </map> + <key>ToastFadingTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a toast is fading </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>NearbyToastFadingTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a nearby chat toast is fading </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>3</integer> + </map> + <key>NearbyToastLifeTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a nearby chat toast exists</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>23</integer> + </map> + <key>StartUpToastLifeTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a StartUp toast exist</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>5</integer> + </map> + <key>ToastGap</key> + <map> + <key>Comment</key> + <string>Gap between toasts on a screen</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>5</integer> + </map> + <key>ToastButtonWidth</key> + <map> + <key>Comment</key> + <string>Default width of buttons in the toast. + Note if required width will be less then this one, a button will be reshaped to default size , otherwise to required</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>90</integer> + </map> + <key>ChannelBottomPanelMargin</key> + <map> + <key>Comment</key> + <string>Space from a lower toast to the Bottom Tray</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>35</integer> + </map> + <key>NotificationChannelRightMargin</key> + <map> + <key>Comment</key> + <string>Space between toasts and a right border of an area where they can appear</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>5</integer> + </map> + <key>NotificationChannelHeightRatio</key> + <map> + <key>Comment</key> + <string>Notification channel and World View ratio(0.0 - always show 1 notification, 1.0 - max ratio).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + <key>OverflowToastHeight</key> + <map> + <key>Comment</key> + <string>Height of an overflow toast</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>72</integer> </map> <key>NotifyMoneyChange</key> <map> @@ -6065,22 +5129,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>ObjectChatColor</key> - <map> - <key>Comment</key> - <string>Color of chat messages from objects</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.699999988079</real> - <real>0.899999976158</real> - <real>0.699999988079</real> - <real>1</real> - </array> - </map> <key>OpenDebugStatAdvanced</key> <map> <key>Comment</key> @@ -6183,29 +5231,24 @@ <key>OutBandwidth</key> <map> <key>Comment</key> - <string>Outgoing bandwidth throttle (bps)</string> + <string>Expand render stats display</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>Boolean</string> <key>Value</key> - <real>0.0</real> + <integer>1</integer> </map> - <key>OverdrivenColor</key> + <key>OutBandwidth</key> <map> <key>Comment</key> - <string>Color of various indicators when resident is speaking too loud.</string> + <string>Outgoing bandwidth throttle (bps)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Color4</string> + <string>F32</string> <key>Value</key> - <array> - <real>1.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - </array> + <real>0.0</real> </map> <key>OverlayTitle</key> <map> @@ -6284,22 +5327,6 @@ <key>Value</key> <integer>344</integer> </map> - <key>PermissionsManagerRect</key> - <map> - <key>Comment</key> - <string>Rectangle for permissions manager window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>85</integer> - <integer>300</integer> - <integer>0</integer> - </array> - </map> <key>PickerContextOpacity</key> <map> <key>Comment</key> @@ -6344,17 +5371,6 @@ <key>Value</key> <real>2.5</real> </map> - <key>PinTalkViewOpen</key> - <map> - <key>Comment</key> - <string>Stay in IM after hitting return</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>PingInterpolate</key> <map> <key>Comment</key> @@ -6388,214 +5404,183 @@ <key>Value</key> <integer>1</integer> </map> - <key>PrecachingDelay</key> + <key>PluginAttachDebuggerToPlugins</key> <map> <key>Comment</key> - <string>Delay when logging in to load world before showing it (seconds)</string> + <string>If true, attach a debugger session to each plugin process as it's launched.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>Boolean</string> <key>Value</key> - <real>6.0</real> + <integer>0</integer> </map> - <key>PreferredMaturity</key> + <key>PluginInstancesCPULimit</key> <map> <key>Comment</key> - <string>Setting for the user's preferred maturity level.</string> + <string>Amount of total plugin CPU usage before inworld plugins start getting turned down to "slideshow" priority. Set to 0 to disable this check.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>U32</string> + <string>F32</string> <key>Value</key> - <integer>13</integer> + <real>1.0</real> </map> - <key>PreviewAnimRect</key> + + <key>PlainTextChatHistory</key> <map> <key>Comment</key> - <string>Rectangle for animation preview window</string> + <string>Enable/Disable plain text chat history style</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>85</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <integer>0</integer> </map> - <key>PreviewClassifiedRect</key> + + <key>PluginInstancesLow</key> <map> <key>Comment</key> - <string>Rectangle for URL preview window</string> + <string>Limit on the number of inworld media plugins that will run at "low" priority</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>530</integer> - <integer>420</integer> - <integer>0</integer> - </array> + <integer>4</integer> </map> - <key>PreviewEventRect</key> + <key>PluginInstancesNormal</key> <map> <key>Comment</key> - <string>Rectangle for Event preview window</string> + <string>Limit on the number of inworld media plugins that will run at "normal" or higher priority</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>530</integer> - <integer>420</integer> - <integer>0</integer> - </array> + <integer>2</integer> </map> - <key>PreviewLandmarkRect</key> + <key>PluginInstancesTotal</key> <map> <key>Comment</key> - <string>Rectangle for landmark preview window</string> + <string>Hard limit on the number of plugins that will be instantiated at once for inworld media</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>90</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <integer>8</integer> </map> - <key>PreviewObjectRect</key> + <key>PrecachingDelay</key> <map> <key>Comment</key> - <string>Rectangle for object preview window</string> + <string>Delay when logging in to load world before showing it (seconds)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>F32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>85</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <real>6.0</real> </map> - <key>PreviewScriptRect</key> + <key>PreferredMaturity</key> <map> <key>Comment</key> - <string>Rectangle for script preview window</string> + <string>Setting for the user's preferred maturity level.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>586</integer> - <integer>576</integer> - <integer>0</integer> - </array> + <integer>13</integer> + </map> + <key>PrimMediaMasterEnabled</key> + <map> + <key>Comment</key> + <string>Whether or not Media on a Prim is enabled.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>PrimMediaControlsUseHoverControlSet</key> + <map> + <key>Comment</key> + <string>Whether or not hovering over prim media uses minimal "hover" controls or the authored control set.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> </map> - <key>PreviewSoundRect</key> + <key>PrimMediaMaxRetries</key> <map> <key>Comment</key> - <string>Rectangle for sound preview window</string> + <string>Maximum number of retries for media queries.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>85</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <integer>4</integer> </map> - <key>PreviewTextureRect</key> + <key>PrimMediaRequestQueueDelay</key> <map> <key>Comment</key> - <string>Rectangle for texture preview window</string> + <string>Timer delay for fetching media from the queue (in seconds).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>F32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>400</integer> - <integer>400</integer> - <integer>0</integer> - </array> + <real>1.0</real> </map> - <key>PreviewURLRect</key> + <key>PrimMediaRetryTimerDelay</key> <map> <key>Comment</key> - <string>Rectangle for URL preview window</string> + <string>Timer delay for retrying on media queries (in seconds).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>F32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>90</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <real>5.0</real> </map> - <key>PreviewWearableRect</key> + <key>PrimMediaMaxSortedQueueSize</key> <map> <key>Comment</key> - <string>Rectangle for wearable preview window</string> + <string>Maximum number of objects the viewer will load media for initially</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>U32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>85</integer> - <integer>300</integer> - <integer>0</integer> - </array> + <integer>100000</integer> </map> - <key>ProbeHardwareOnStartup</key> + <key>PrimMediaMaxRoundRobinQueueSize</key> <map> <key>Comment</key> - <string>Query current hardware configuration on application startup</string> + <string>Maximum number of objects the viewer will continuously update media for</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>U32</string> <key>Value</key> - <integer>1</integer> + <integer>100000</integer> </map> - <key>PropertiesRect</key> + <key>ProbeHardwareOnStartup</key> <map> <key>Comment</key> - <string>Rectangle for inventory item properties window</string> + <string>Query current hardware configuration on application startup</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>320</integer> - <integer>350</integer> - <integer>0</integer> - </array> + <integer>1</integer> </map> <key>PurgeCacheOnNextStartup</key> <map> @@ -6639,7 +5624,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>QAMode</key> <map> @@ -6652,6 +5637,28 @@ <key>Value</key> <integer>0</integer> </map> + <key>QAModeEventHostPort</key> + <map> + <key>Comment</key> + <string>Port on which lleventhost should listen</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>-1</integer> + </map> + <key>QAModeTermCode</key> + <map> + <key>Comment</key> + <string>On LL_ERRS, terminate with this code instead of OS message box</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>-1</integer> + </map> <key>QuietSnapshotsToDisk</key> <map> <key>Comment</key> @@ -6729,6 +5736,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>RegInClient</key> + <map> + <key>Comment</key> + <string>Experimental: Embed registration in login screen</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>RegionTextureSize</key> <map> <key>Comment</key> @@ -6794,8 +5812,19 @@ <string>Boolean</string> <key>Value</key> <integer>1</integer> - </map> - <key>RenderAvatarCloth</key> + </map> + <key>RenderAvatar</key> + <map> + <key>Comment</key> + <string>Render Avatars</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>RenderAvatarCloth</key> <map> <key>Comment</key> <string>Controls if avatars use wavy cloth</string> @@ -6828,17 +5857,6 @@ <key>Value</key> <integer>35</integer> </map> - <key>RenderAvatarInvisible</key> - <map> - <key>Comment</key> - <string>Set your avatar as Invisible</string> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>RenderAvatarVP</key> <map> <key>Comment</key> @@ -6850,42 +5868,56 @@ <key>Value</key> <integer>1</integer> </map> - - <key>RenderShadowGaussian</key> + + <key>RenderShadowNearDist</key> <map> <key>Comment</key> - <string>Gaussian coefficients for the two shadow/SSAO blurring passes (z component unused).</string> + <string>Near clip plane of shadow camera (affects precision of depth shadows).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Vector3</string> <key>Value</key> <array> - <real>2.0</real> - <real>2.0</real> - <real>0.0</real> + <real>256</real> + <real>256</real> + <real>256</real> </array> </map> - - <key>RenderShadowNearDist</key> + <key>RenderShadowClipPlanes</key> <map> <key>Comment</key> - <string>Near clip plane of shadow camera (affects precision of depth shadows).</string> + <string>Near clip plane split distances for shadow map frusta.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Vector3</string> <key>Value</key> <array> - <real>256</real> - <real>256</real> - <real>256</real> + <real>1.0</real> + <real>12.0</real> + <real>32.0</real> </array> </map> - <key>RenderShadowClipPlanes</key> + <key>RenderShadowSplitExponent</key> <map> <key>Comment</key> - <string>Near clip plane split distances for shadow map frusta.</string> + <string>Near clip plane split distances for shadow map frusta (x=perspective, y=ortho, z=transition rate).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>3.0</real> + <real>3.0</real> + <real>2.0</real> + </array> + </map> + <key>RenderShadowOrthoClipPlanes</key> + <map> + <key>Comment</key> + <string>Near clip plane split distances for orthographic shadow map frusta.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -6897,6 +5929,39 @@ <real>24.0</real> </array> </map> + <key>RenderShadowProjOffset</key> + <map> + <key>Comment</key> + <string>Amount to scale distance to virtual origin of shadow perspective projection.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>2.0</real> + </map> + <key>RenderShadowSlopeThreshold</key> + <map> + <key>Comment</key> + <string>Cutoff slope value for points to affect perspective shadow generation</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.0</real> + </map> + <key>RenderShadowProjExponent</key> + <map> + <key>Comment</key> + <string>Exponent applied to transition between ortho and perspective shadow projections based on viewing angle and light vector.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> <key>RenderSSAOScale</key> <map> <key>Comment</key> @@ -6965,7 +6030,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>128</real> + <real>64</real> </map> <key>RenderCubeMap</key> <map> @@ -6978,16 +6043,16 @@ <key>Value</key> <integer>1</integer> </map> - <key>RenderCustomSettings</key> + <key>RenderDebugAlphaMask</key> <map> <key>Comment</key> - <string>Do you want to set the graphics settings yourself</string> + <string>Test Alpha Masking Cutoffs.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>F32</string> <key>Value</key> - <integer>0</integer> + <real>0.5</real> </map> <key>RenderDebugGL</key> <map> @@ -7044,7 +6109,7 @@ <key>Value</key> <integer>0</integer> </map> - + <key>RenderAnimateTrees</key> <map> <key>Comment</key> @@ -7056,6 +6121,174 @@ <key>Value</key> <integer>0</integer> </map> + + <key>RenderGIRange</key> + <map> + <key>Comment</key> + <string>Distance to cut off GI effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>96</real> + </map> + + <key>RenderGILuminance</key> + <map> + <key>Comment</key> + <string>Luminance factor of global illumination contribution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.075</real> + </map> + + <key>RenderGIBrightness</key> + <map> + <key>Comment</key> + <string>Brightness factor of global illumination contribution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.3</real> + </map> + + <key>RenderGINoise</key> + <map> + <key>Comment</key> + <string>Noise of position sampling for GI photon mapping.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.7</real> + </map> + + <key>RenderGIAttenuation</key> + <map> + <key>Comment</key> + <string>Distance attenuation factor for indirect lighting.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.1</real> + </map> + + <key>RenderGIBlurBrightness</key> + <map> + <key>Comment</key> + <string>Brightness factor of global illumination blur effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.025</real> + </map> + + <key>RenderGIBlurEdgeWeight</key> + <map> + <key>Comment</key> + <string>Edge weight for GI soften filter (sharpness).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.8</real> + </map> + + <key>RenderGIBlurIncrement</key> + <map> + <key>Comment</key> + <string>Increment of scale for each pass of global illumination blur effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.8</real> + </map> + + <key>RenderLuminanceScale</key> + <map> + <key>Comment</key> + <string>Luminance value scalar for darkening effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> + + <key>RenderSunLuminanceScale</key> + <map> + <key>Comment</key> + <string>Sun Luminance value scalar for darkening effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> + + <key>RenderSunLuminanceOffset</key> + <map> + <key>Comment</key> + <string>Sun Luminance value offset for darkening effect.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0</real> + </map> + + <key>RenderLuminanceDetail</key> + <map> + <key>Comment</key> + <string>Mipmap level to use for luminance</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>16.0</real> + </map> + + <key>RenderEdgeDepthCutoff</key> + <map> + <key>Comment</key> + <string>Cutoff for depth difference that amounts to an edge.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.01</real> + </map> + <key>RenderEdgeNormCutoff</key> + <map> + <key>Comment</key> + <string>Cutoff for normal difference that amounts to an edge.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.25</real> + </map> + <key>RenderDeferredAlphaSoften</key> <map> <key>Comment</key> @@ -7078,6 +6311,190 @@ <key>Value</key> <real>4</real> </map> + <key>RenderDeferredSpotShadowBias</key> + <map> + <key>Comment</key> + <string>Bias value for spot shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>-64.0</real> + </map> + <key>RenderDeferredSpotShadowOffset</key> + <map> + <key>Comment</key> + <string>Offset value for spot shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.8</real> + </map> + + <key>RenderShadowBias</key> + <map> + <key>Comment</key> + <string>Bias value for shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>-0.008</real> + </map> + <key>RenderShadowOffset</key> + <map> + <key>Comment</key> + <string>Offset value for shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.01</real> + </map> + + <key>RenderShadowResolutionScale</key> + <map> + <key>Comment</key> + <string>Scale of shadow map resolution vs. screen resolution</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> + + + + <key>RenderDeferredTreeShadowBias</key> + <map> + <key>Comment</key> + <string>Bias value for tree shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> + <key>RenderDeferredTreeShadowOffset</key> + <map> + <key>Comment</key> + <string>Offset value for tree shadows (prevent shadow acne).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> + + <key>RenderHoverGlowEnable</key> + <map> + <key>Comment</key> + <string>Show glow effect when hovering on interactive objects.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + + <key>RenderHighlightFadeTime</key> + <map> + <key>Comment</key> + <string>Transition time for mouseover highlights.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.1</real> + </map> + + <key>RenderHighlightBrightness</key> + <map> + <key>Comment</key> + <string>Brightness of mouseover highlights.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>4.0</real> + </map> + + <key>RenderHighlightThickness</key> + <map> + <key>Comment</key> + <string>Thickness of mouseover highlights.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.6</real> + </map> + + <key>RenderHighlightColor</key> + <map> + <key>Comment</key> + <string>Brightness of mouseover highlights.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Color4</string> + <key>Value</key> + <array> + <real>0.4</real> + <real>0.98</real> + <real>0.93</real> + <real>1.0</real> + </array> + </map> + + <key>RenderSpecularResX</key> + <map> + <key>Comment</key> + <string>Spec map resolution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>128</real> + </map> + + <key>RenderSpecularResY</key> + <map> + <key>Comment</key> + <string>Spec map resolution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>128</real> + </map> + + <key>RenderSpecularExponent</key> + <map> + <key>Comment</key> + <string>Specular exponent for generating spec map</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1</real> + </map> + <key>RenderDeferred</key> <map> <key>Comment</key> @@ -7089,6 +6506,31 @@ <key>Value</key> <integer>0</integer> </map> + + <key>RenderDeferredShadow</key> + <map> + <key>Comment</key> + <string>Enable shadows in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>RenderDeferredGI</key> + <map> + <key>Comment</key> + <string>Enable GI in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>RenderDeferredSunShadow</key> <map> <key>Comment</key> @@ -7100,6 +6542,67 @@ <key>Value</key> <integer>1</integer> </map> + + <key>RenderDeferredSun</key> + <map> + <key>Comment</key> + <string>Execute sunlight shader in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>RenderDeferredAtmospheric</key> + <map> + <key>Comment</key> + <string>Execute atmospheric shader in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>RenderDeferredBlurLight</key> + <map> + <key>Comment</key> + <string>Execute shadow softening shader in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>RenderDeferredLocalLights</key> + <map> + <key>Comment</key> + <string>Execute local lighting shader in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>RenderDeferredFullscreenLights</key> + <map> + <key>Comment</key> + <string>Execute local lighting shader in deferred renderer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>RenderDeferredSunWash</key> <map> <key>Comment</key> @@ -7122,6 +6625,45 @@ <key>Value</key> <real>-0.0001</real> </map> + <key>RenderShadowErrorCutoff</key> + <map> + <key>Comment</key> + <string>Cutoff error value to use ortho instead of perspective projection.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>5.0</real> + </map> + <key>RenderShadowFOVCutoff</key> + <map> + <key>Comment</key> + <string>Cutoff FOV to use ortho instead of perspective projection.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.1</real> + </map> + + <key>RenderShadowGaussian</key> + <map> + <key>Comment</key> + <string>Gaussian coefficients for the two shadow/SSAO blurring passes (z component unused).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>3.0</real> + <real>2.0</real> + <real>0.0</real> + </array> + </map> + <key>RenderShadowBlurSize</key> <map> <key>Comment</key> @@ -7131,7 +6673,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>0.7</real> + <real>1.4</real> </map> <key>RenderShadowBlurSamples</key> <map> @@ -7142,8 +6684,106 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>5</real> + <real>4</real> + </map> + <key>RenderShadowBlurDistFactor</key> + <map> + <key>Comment</key> + <string>Distance scaler for shadow blur.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.1</real> + </map> + + <key>RenderGIAmbiance</key> + <map> + <key>Comment</key> + <string>Ambiance factor of global illumination contribution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + + <key>RenderGIMinRenderSize</key> + <map> + <key>Comment</key> + <string>Minimum size of objects to put into GI source map.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> + + <key>RenderGIBlurColorCurve</key> + <map> + <key>Comment</key> + <string>Color curve for GI softening kernel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>1.0</real> + <real>0.6</real> + <real>0.02</real> + </array> + </map> + + <key>RenderGIBlurPasses</key> + <map> + <key>Comment</key> + <string>Scale of GI softening kernel.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>4</real> + </map> + + <key>RenderGIBlurSize</key> + <map> + <key>Comment</key> + <string>Scale of GI softening kernel.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>4.0</real> + </map> + <key>RenderGIBlurSamples</key> + <map> + <key>Comment</key> + <string>Number of samples to take for each pass of GI blur (value range 1-16). Actual number of samples is value * 2 - 1.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>16</real> </map> + <key>RenderGIBlurDistFactor</key> + <map> + <key>Comment</key> + <string>Distance scaler for GI blur.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.0</real> + </map> + <key>RenderDynamicLOD</key> <map> <key>Comment</key> @@ -7416,7 +7056,7 @@ <key>Value</key> <integer>0</integer> </map> - <key>RenderHideGroupTitleAll</key> + <key>RenderShowGroupTitleAll</key> <map> <key>Comment</key> <string>Show group titles in name labels</string> @@ -7425,7 +7065,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>RenderInitError</key> <map> @@ -7480,7 +7120,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>4096</integer> + <integer>8192</integer> </map> <key>RenderMaxVBOSize</key> <map> @@ -7493,17 +7133,6 @@ <key>Value</key> <integer>512</integer> </map> - <key>RenderName</key> - <map> - <key>Comment</key> - <string>Controls display of names above avatars (0 = never, 1 = fade, 2 = always)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>2</integer> - </map> <key>RenderNameFadeDuration</key> <map> <key>Comment</key> @@ -7515,16 +7144,16 @@ <key>Value</key> <real>1.0</real> </map> - <key>RenderNameHideSelf</key> + <key>RenderNameShowSelf</key> <map> <key>Comment</key> - <string>Don't display own name above avatar</string> + <string>Display own name above avatar</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>RenderNameShowTime</key> <map> @@ -7702,6 +7331,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderUIBuffer</key> + <map> + <key>Comment</key> + <string>Cache ui render in a screen aligned buffer.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>RenderUnloadedAvatar</key> <map> <key>Comment</key> @@ -7856,17 +7496,6 @@ <key>Value</key> <real>1.0</real> </map> - <key>RunBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>RunMultipleThreads</key> <map> <key>Comment</key> @@ -7933,33 +7562,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>ScriptErrorColor</key> - <map> - <key>Comment</key> - <string>Color of script error messages</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.8235294117</real> - <real>0.2745098039</real> - <real>0.2745098039</real> - <real>1.0</real> - </array> - </map> - <key>ScriptErrorsAsChat</key> - <map> - <key>Comment</key> - <string>Display script errors and warning in chat history</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>ScriptHelpFollowsCursor</key> <map> <key>Comment</key> @@ -7971,45 +7573,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>SearchURLDefault</key> - <map> - <key>Comment</key> - <string>URL to load for empty searches</string> - <key>Persist</key> - <integer>1</integer> - <key>HideFromEditor</key> - <integer>1</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>http://search.secondlife.com/client_search.php?</string> - </map> - <key>SearchURLQuery</key> - <map> - <key>Comment</key> - <string>URL to use for searches</string> - <key>Persist</key> - <integer>1</integer> - <key>HideFromEditor</key> - <integer>1</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>http://search.secondlife.com/client_search.php?q=[QUERY]&s=[COLLECTION]&</string> - </map> - <key>SearchURLSuffix2</key> - <map> - <key>Comment</key> - <string>Parameters added to end of search queries</string> - <key>Persist</key> - <integer>1</integer> - <key>HideFromEditor</key> - <integer>1</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>lang=[LANG]&mat=[MATURITY]&t=[TEEN]&region=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]</string> - </map> <key>SelectMovableOnly</key> <map> <key>Comment</key> @@ -8131,10 +7694,10 @@ <key>Value</key> <integer>0</integer> </map> - <key>ShowActiveSpeakers</key> + <key>ShowAdvancedGraphicsSettings</key> <map> <key>Comment</key> - <string>Display active speakers list on login</string> + <string>Show advanced graphics settings</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8153,6 +7716,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>AvatarNameTagMode</key> + <map> + <key>Comment</key> + <string>Select Avatar Name Tag Mode</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>1</integer> + </map> <key>ShowAxes</key> <map> <key>Comment</key> @@ -8175,43 +7749,76 @@ <key>Value</key> <integer>1</integer> </map> - <key>ShowCameraControls</key> + <key>ShowConsoleWindow</key> <map> <key>Comment</key> - <string>Display camera controls on login</string> + <string>Show log in separate OS window</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> - <key>ShowChatHistory</key> + <key>NavBarShowCoordinates</key> <map> <key>Comment</key> - <string /> + <string>Show coordinates in navigation bar</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> <integer>0</integer> </map> - <key>ShowCommunicate</key> + <key>NavBarShowParcelProperties</key> <map> <key>Comment</key> - <string /> + <string>Show parcel property icons in navigation bar</string> <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>ShowCrosshairs</key> + <map> + <key>Comment</key> + <string>Display crosshairs when in mouselook mode</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>ShowDebugConsole</key> + <map> + <key>Comment</key> + <string>Show log in SL window</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> <integer>0</integer> + </map> + <key>ShowDebugAppearanceEditor</key> + <map> + <key>Comment</key> + <string>Show debugging appearance editor</string> + <key>Persist</key> + <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> <integer>0</integer> </map> - <key>ShowConsoleWindow</key> + <key>ShowEmptyFoldersWhenSearching</key> <map> <key>Comment</key> - <string>Show log in separate OS window</string> + <string>Shows folders that do not have any visible contents when applying a filter to inventory</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8219,10 +7826,10 @@ <key>Value</key> <integer>0</integer> </map> - <key>ShowCrosshairs</key> + <key>ShowHoverTips</key> <map> <key>Comment</key> - <string>Display crosshairs when in mouselook mode</string> + <string>Show descriptive tooltip when mouse hovers over items in world</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -8230,98 +7837,197 @@ <key>Value</key> <integer>1</integer> </map> - <key>ShowDebugConsole</key> + <key>ShowLandHoverTip</key> <map> <key>Comment</key> - <string>Show log in SL window</string> + <string>Show descriptive tooltip when mouse hovers over land</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> <integer>0</integer> + </map> + <key>ShowCameraButton</key> + <map> + <key>Comment</key> + <string>Show/Hide Camera button in the bottom tray</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> </map> - <key>ShowDebugStats</key> + <key>ShowScriptErrors</key> <map> <key>Comment</key> - <string>Show performance stats display</string> + <string>Show script errors</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>ShowDirectory</key> + <key>ShowScriptErrorsLocation</key> <map> <key>Comment</key> - <string /> + <string>Show script error in chat or window</string> <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> <integer>0</integer> + </map> + <key>ShowSnapshotButton</key> + <map> + <key>Comment</key> + <string>Show/Hide Snapshot button button in the bottom tray</string> + <key>Persist</key> + <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>ShowEmptyFoldersWhenSearching</key> + <key>ShowMoveButton</key> <map> <key>Comment</key> - <string>Shows folders that do not have any visible contents when applying a filter to inventory</string> + <string>Show/Hide Move button in the bottom tray</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> + </map> + <key>ShowGestureButton</key> + <map> + <key>Comment</key> + <string>Show/Hide Gesture button in the bottom tray</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> </map> - <key>ShowHoverTips</key> + <key>ShowObjectRenderingCost</key> <map> <key>Comment</key> - <string>Show descriptive tooltip when mouse hovers over items in world</string> + <string>Show the object rendering cost in build tools</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> + <integer>1</integer> + </map> + <key>ShowNavbarFavoritesPanel</key> + <map> + <key>Comment</key> + <string>Show/Hide Navigation Bar Favorites Panel</string> + <key>Persist</key> <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> </map> - <key>ShowInventory</key> + <key>ShowNavbarNavigationPanel</key> <map> <key>Comment</key> - <string>Open inventory window on login</string> + <string>Show/Hide Navigation Bar Navigation Panel</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>ShowLandHoverTip</key> + <key>GroupListShowIcons</key> <map> <key>Comment</key> - <string>Show descriptive tooltip when mouse hovers over land</string> + <string>Show/hide group icons in the group list</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>ShowLeaders</key> + <key>FriendsListShowIcons</key> <map> <key>Comment</key> - <string /> + <string>Show/hide online and all friends icons in the friend list</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>NearbyListShowIcons</key> + <map> + <key>Comment</key> + <string>Show/hide people icons in nearby list</string> + <key>Persist</key> + <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> + <integer>1</integer> + </map> + <key>RecentListShowIcons</key> + <map> + <key>Comment</key> + <string>Show/hide people icons in recent list</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FriendsSortOrder</key> + <map> + <key>Comment</key> + <string>Specifies sort order for friends (0 = by name, 1 = by online status)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> <integer>0</integer> </map> - <key>ShowPGSearchAll</key> + <key>NearbyPeopleSortOrder</key> + <map> + <key>Comment</key> + <string>Specifies sort order for nearby people (0 = by name, 2 = by most recent)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>2</integer> + </map> + <key>RecentPeopleSortOrder</key> + <map> + <key>Comment</key> + <string>Specifies sort order for recent people (0 = by name, 2 = by most recent)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>2</integer> + </map> + <key>ShowPGSearchAll</key> <map> <key>Comment</key> - <string>Display results of search All that are flagged as PG</string> + <string>Display results of search All that are flagged as general</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8334,7 +8040,7 @@ <key>ShowMatureSearchAll</key> <map> <key>Comment</key> - <string>Display results of search All that are flagged as mature</string> + <string>Display results of search All that are flagged as moderate</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8360,7 +8066,7 @@ <key>ShowPGGroups</key> <map> <key>Comment</key> - <string>Display results of find groups that are flagged as PG</string> + <string>Display results of find groups that are flagged as general</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8373,7 +8079,7 @@ <key>ShowMatureGroups</key> <map> <key>Comment</key> - <string>Display results of find groups that are flagged as mature</string> + <string>Display results of find groups that are flagged as moderate</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8399,7 +8105,7 @@ <key>ShowPGClassifieds</key> <map> <key>Comment</key> - <string>Display results of find classifieds that are flagged as PG</string> + <string>Display results of find classifieds that are flagged as general</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8412,7 +8118,7 @@ <key>ShowMatureClassifieds</key> <map> <key>Comment</key> - <string>Display results of find classifieds that are flagged as mature</string> + <string>Display results of find classifieds that are flagged as moderate</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8438,7 +8144,7 @@ <key>ShowPGEvents</key> <map> <key>Comment</key> - <string>Display results of find events that are flagged as PG</string> + <string>Display results of find events that are flagged as general</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8451,7 +8157,7 @@ <key>ShowMatureEvents</key> <map> <key>Comment</key> - <string>Display results of find events that are flagged as mature</string> + <string>Display results of find events that are flagged as moderate</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8477,7 +8183,7 @@ <key>ShowPGLand</key> <map> <key>Comment</key> - <string>Display results of find land sales that are flagged as PG</string> + <string>Display results of find land sales that are flagged as general</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8490,7 +8196,7 @@ <key>ShowMatureLand</key> <map> <key>Comment</key> - <string>Display results of find land sales that are flagged as mature</string> + <string>Display results of find land sales that are flagged as moderate</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8516,7 +8222,7 @@ <key>ShowPGSims</key> <map> <key>Comment</key> - <string>Display results of find places or find popular that are in PG sims</string> + <string>Display results of find places or find popular that are in general sims</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8529,7 +8235,7 @@ <key>ShowMatureSims</key> <map> <key>Comment</key> - <string>Display results of find places or find popular that are in mature sims</string> + <string>Display results of find places or find popular that are in moderate sims</string> <key>Persist</key> <integer>1</integer> <key>HideFromEditor</key> @@ -8552,28 +8258,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>ShowMiniMap</key> - <map> - <key>Comment</key> - <string>Display mini map on login</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>ShowMovementControls</key> - <map> - <key>Comment</key> - <string>Display movement controls on login</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>ShowNearClip</key> <map> <key>Comment</key> @@ -8662,7 +8346,7 @@ <key>Value</key> <integer>0</integer> </map> - <key>ShowSearchBar</key> + <key>ShowNetStats</key> <map> <key>Comment</key> <string>Show the Search Bar in the Status Overlay</string> @@ -8671,7 +8355,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>ShowSelectionBeam</key> <map> @@ -8693,7 +8377,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>ShowTangentBasis</key> <map> @@ -8717,17 +8401,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>ShowTools</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>ShowTutorial</key> <map> <key>Comment</key> @@ -8761,49 +8434,27 @@ <key>Value</key> <integer>0</integer> </map> - <key>ShowWorldMap</key> - <map> - <key>Comment</key> - <string>Display world map on login</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>ShowXUINames</key> + <key>SkinCurrent</key> <map> <key>Comment</key> - <string>Display XUI Names as Tooltips</string> + <string>The currently selected skin.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>String</string> <key>Value</key> - <integer>0</integer> + <string>default</string> </map> - <key>SitBtnState</key> + <key>SkinningSettingsFile</key> <map> <key>Comment</key> - <string /> + <string>Client skin color setting file name (per install).</string> <key>Persist</key> <integer>0</integer> <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>SkinCurrent</key> - <map> - <key>Comment</key> - <string>The currently selected skin.</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> <string>String</string> <key>Value</key> - <string>default</string> + <string /> </map> <key>SkyAmbientScale</key> <map> @@ -8837,8 +8488,8 @@ <string>Color3</string> <key>Value</key> <array> - <real>0.699999988079</real> - <real>0.699999988079</real> + <real>0.67</real> + <real>0.67</real> <real>1.0</real> </array> </map> @@ -8879,38 +8530,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>SlideLeftBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>20</integer> - <integer>54</integer> - <integer>45</integer> - <integer>29</integer> - </array> - </map> - <key>SlideRightBtnRect</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>66</integer> - <integer>54</integer> - <integer>91</integer> - <integer>29</integer> - </array> - </map> <key>SmallAvatarNames</key> <map> <key>Comment</key> @@ -9010,22 +8629,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>SpeakingColor</key> - <map> - <key>Comment</key> - <string>Color of various indicators when resident is speaking on a voice channel.</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.0</real> - <real>1.0</real> - <real>0.0</real> - <real>1.0</real> - </array> - </map> <key>SpeedTest</key> <map> <key>Comment</key> @@ -9114,59 +8717,54 @@ <key>Value</key> <string>fss.txt</string> </map> - <key>StatusBarHeight</key> + <key>SystemLanguage</key> <map> <key>Comment</key> - <string>Height of menu/status bar at top of screen (pixels)</string> + <string>Language indicated by system settings (for UI)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>S32</string> + <string>String</string> <key>Value</key> - <integer>26</integer> + <string>en</string> </map> - <key>StatusBarPad</key> + <key>TabToTextFieldsOnly</key> <map> <key>Comment</key> - <string>Spacing between popup buttons at bottom of screen (Stand up, Release Controls)</string> + <string>TAB key takes you to next text entry field, instead of next widget</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>S32</string> + <string>Boolean</string> <key>Value</key> - <integer>10</integer> + <integer>0</integer> </map> - <key>SystemChatColor</key> + <key>TerrainColorHeightRange</key> <map> <key>Comment</key> - <string>Color of chat messages from SL System</string> + <string>Altitude range over which a given terrain texture has effect (meters)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Color4</string> + <string>F32</string> <key>Value</key> - <array> - <real>0.800000011921</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> + <real>60.0</real> </map> - <key>SystemLanguage</key> + <key>TerrainColorStartHeight</key> <map> <key>Comment</key> - <string>Language indicated by system settings (for UI)</string> + <string>Starting altitude for terrain texturing (meters)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>F32</string> <key>Value</key> - <string>en-us</string> + <real>20.0</real> </map> - <key>TabToTextFieldsOnly</key> + <key>TextureDecodeDisabled</key> <map> <key>Comment</key> - <string>TAB key takes you to next text entry field, instead of next widget</string> + <string>If TRUE, do not fetch and decode any textures</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -9174,27 +8772,27 @@ <key>Value</key> <integer>0</integer> </map> - <key>TerrainColorHeightRange</key> + <key>TextureDisable</key> <map> <key>Comment</key> - <string>Altitude range over which a given terrain texture has effect (meters)</string> + <string>If TRUE, do not load textures for in-world content</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>Boolean</string> <key>Value</key> - <real>60.0</real> + <integer>0</integer> </map> - <key>TerrainColorStartHeight</key> + <key>TextureLoadFullRes</key> <map> <key>Comment</key> - <string>Starting altitude for terrain texturing (meters)</string> + <string>If TRUE, always load textures at full resolution (discard = 0)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>Boolean</string> <key>Value</key> - <real>20.0</real> + <integer>0</integer> </map> <key>TextureMemory</key> <map> @@ -9207,22 +8805,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>TexturePickerRect</key> - <map> - <key>Comment</key> - <string>Rectangle for texture picker</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Rect</string> - <key>Value</key> - <array> - <integer>0</integer> - <integer>290</integer> - <integer>350</integer> - <integer>0</integer> - </array> - </map> <key>TexturePickerShowFolders</key> <map> <key>Comment</key> @@ -9245,17 +8827,6 @@ <key>Value</key> <integer>2</integer> </map> - <key>ThirdPersonBtnState</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>ThrottleBandwidthKBPS</key> <map> <key>Comment</key> @@ -9267,102 +8838,82 @@ <key>Value</key> <real>500.0</real> </map> - <key>ToolHelpRect</key> + <key>ToolTipDelay</key> <map> <key>Comment</key> - <string /> + <string>Seconds before displaying tooltip when mouse stops over UI element</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>F32</string> <key>Value</key> - <array> - <integer>8</integer> - <integer>178</integer> - <integer>75</integer> - <integer>162</integer> - </array> + <real>0.699999988079</real> </map> - <key>ToolTipDelay</key> + <key>ToolTipFadeTime</key> <map> <key>Comment</key> - <string>Seconds before displaying tooltip when mouse stops over UI element</string> + <string>Seconds over which tooltip fades away</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>F32</string> <key>Value</key> - <real>0.699999988079</real> + <real>0.2</real> </map> - <key>ToolboxAutoMove</key> + <key>ToolTipVisibleTimeFar</key> <map> <key>Comment</key> - <string>[NOT USED]</string> + <string>Fade tooltip after after time passes (seconds) while mouse not near tooltip</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>F32</string> <key>Value</key> - <integer>0</integer> + <real>1.0</real> </map> - <key>ToolboxRect</key> + <key>ToolTipVisibleTimeNear</key> <map> <key>Comment</key> - <string>Rectangle for tools window</string> + <string>Fade tooltip after after time passes (seconds) while mouse near tooltip or original position</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>F32</string> <key>Value</key> - <array> - <integer>0</integer> - <integer>100</integer> - <integer>100</integer> - <integer>100</integer> - </array> + <real>10.0</real> </map> - <key>TrackFocusObject</key> + <key>ToolTipVisibleTimeOver</key> <map> <key>Comment</key> - <string>Camera tracks last object zoomed on</string> + <string>Fade tooltip after after time passes (seconds) while mouse over tooltip</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>F32</string> <key>Value</key> - <integer>1</integer> + <real>1000.0</real> </map> - <key>TurnLeftBtnRect</key> + <key>ToolboxAutoMove</key> <map> <key>Comment</key> - <string /> + <string>[NOT USED]</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>20</integer> - <integer>29</integer> - <integer>45</integer> - <integer>4</integer> - </array> + <integer>0</integer> </map> - <key>TurnRightBtnRect</key> + <key>TrackFocusObject</key> <map> <key>Comment</key> - <string /> + <string>Camera tracks last object zoomed on</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>Rect</string> + <string>Boolean</string> <key>Value</key> - <array> - <integer>66</integer> - <integer>29</integer> - <integer>91</integer> - <integer>4</integer> - </array> + <integer>1</integer> </map> <key>TutorialURL</key> <map> @@ -9397,656 +8948,194 @@ <key>Value</key> <integer>1</integer> </map> - <key>UIFloaterTestBool</key> + <key>UIAvatariconctrlSymbolHPad</key> <map> <key>Comment</key> - <string>Example saved setting for the test floater</string> + <string>UI Avatar Icon Control Symbol Horizontal Pad</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>UIImgBtnCloseActiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>47a8c844-cd2a-4b1a-be01-df8b1612fe5d</string> - </map> - <key>UIImgBtnCloseInactiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>779e4fa3-9b13-f74a-fba9-3886fe9c86ba</string> - </map> - <key>UIImgBtnClosePressedUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>e5821134-23c0-4bd0-af06-7fa95b9fb01a</string> - </map> - <key>UIImgBtnForwardInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>54197a61-f5d1-4c29-95d2-c071d08849cb</string> - </map> - <key>UIImgBtnForwardOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>a0eb4021-1b20-4a53-892d-8faa9265a6f5</string> - </map> - <key>UIImgBtnJumpLeftInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1</string> - </map> - <key>UIImgBtnJumpLeftOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>3c18c87e-5f50-14e2-e744-f44734aa365f</string> - </map> - <key>UIImgBtnJumpRightInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>7dabc040-ec13-2309-ddf7-4f161f6de2f4</string> - </map> - <key>UIImgBtnJumpRightOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>ff9a71eb-7414-4cf8-866e-a701deb7c3cf</string> - </map> - <key>UIImgBtnLeftInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>95463c78-aaa6-464d-892d-3a805b6bb7bf</string> - </map> - <key>UIImgBtnLeftOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>13a93910-6b44-45eb-ad3a-4d1324c59bac</string> - </map> - <key>UIImgBtnMinimizeActiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>34c9398d-bb78-4643-9633-46a2fa3e9637</string> - </map> - <key>UIImgBtnMinimizeInactiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>6e72abba-1378-437f-bf7a-f0c15f3e99a3</string> - </map> - <key>UIImgBtnMinimizePressedUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>39801651-26cb-4926-af57-7af9352c273c</string> - </map> - <key>UIImgBtnMoveDownInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>b92a70b9-c841-4c94-b4b3-cee9eb460d48</string> - </map> - <key>UIImgBtnMoveDownOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>b5abc9fa-9e62-4e03-bc33-82c4c1b6b689</string> - </map> - <key>UIImgBtnMoveUpInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>49b4b357-e430-4b56-b9e0-05b8759c3c82</string> - </map> - <key>UIImgBtnMoveUpOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>f887146d-829f-4e39-9211-cf872b78f97c</string> - </map> - <key>UIImgBtnPanDownInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>e5821134-23c0-4bd0-af06-7fa95b9fb01a</string> - </map> - <key>UIImgBtnPanDownOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>47a8c844-cd2a-4b1a-be01-df8b1612fe5d</string> - </map> - <key>UIImgBtnPanLeftInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>e5821134-23c0-4bd0-af06-7fa95b9fb01a</string> - </map> - <key>UIImgBtnPanLeftOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>47a8c844-cd2a-4b1a-be01-df8b1612fe5d</string> - </map> - <key>UIImgBtnPanRightInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>e5821134-23c0-4bd0-af06-7fa95b9fb01a</string> - </map> - <key>UIImgBtnPanRightOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>47a8c844-cd2a-4b1a-be01-df8b1612fe5d</string> - </map> - <key>UIImgBtnPanUpInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>e5821134-23c0-4bd0-af06-7fa95b9fb01a</string> - </map> - <key>UIImgBtnPanUpOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>47a8c844-cd2a-4b1a-be01-df8b1612fe5d</string> - </map> - <key>UIImgBtnRestoreActiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>111b39de-8928-4690-b7b2-e17d5c960277</string> - </map> - <key>UIImgBtnRestoreInactiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>0eafa471-70af-4882-b8c1-40a310929744</string> - </map> - <key>UIImgBtnRestorePressedUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>90a0ed5c-2e7b-4845-9958-a64a1b30f312</string> - </map> - <key>UIImgBtnRightInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>5e616d0d-4335-476f-9977-560bccd009da</string> - </map> - <key>UIImgBtnRightOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>5a44fd04-f52b-4c30-8b00-4a31e27614bd</string> - </map> - <key>UIImgBtnScrollDownInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>d2421bab-2eaf-4863-b8f6-5e4c52519247</string> - </map> - <key>UIImgBtnScrollDownOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>b4ecdecf-5c8d-44e7-b882-17a77e88ed55</string> - </map> - <key>UIImgBtnScrollLeftInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>ea137a32-6718-4d05-9c22-7d570d27b2cd</string> - </map> - <key>UIImgBtnScrollLeftOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>43773e8d-49aa-48e0-80f3-a04715f4677a</string> - </map> - <key>UIImgBtnScrollRightInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>b749de64-e903-4c3c-ac0b-25fb6fa39cb5</string> - </map> - <key>UIImgBtnScrollRightOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>3d700d19-e708-465d-87f2-46c8c0ee7938</string> - </map> - <key>UIImgBtnScrollUpInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>a93abdf3-27b5-4e22-a8fa-c48216cd2e3a</string> - </map> - <key>UIImgBtnScrollUpOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>dad084d7-9a46-452a-b0ff-4b9f1cefdde9</string> - </map> - <key>UIImgBtnSlideLeftInUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>724996f5-b956-46f6-9844-4fcfce1d5e83</string> - </map> - <key>UIImgBtnSlideLeftOutUUID</key> + <real>2</real> + </map> + <key>UIAvatariconctrlSymbolVPad</key> <map> <key>Comment</key> - <string /> + <string>UI Avatar Icon Control Symbol Vertical Pad</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>82476321-0374-4c26-9567-521535ab4cd7</string> - </map> - <key>UIImgBtnSlideRightInUUID</key> + <real>2</real> + </map> + <key>UIAvatariconctrlSymbolSize</key> <map> <key>Comment</key> - <string /> + <string>UI Avatar Icon Control Symbol Size</string> <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>7eeb57d2-3f37-454d-a729-8b217b8be443</string> - </map> - <key>UIImgBtnSlideRightOutUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>1fbe4e60-0607-44d1-a50a-032eff56ae75</string> - </map> - <key>UIImgBtnSpinDownInUUID</key> + <real>5</real> + </map> + <key>UIAvatariconctrlSymbolPosition</key> <map> <key>Comment</key> - <string /> + <string>UI Avatar Icon Control Symbol Position (TopLeft|TopRight|BottomLeft|BottomRight)</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>a985ac71-052f-48e6-9c33-d931c813ac92</string> + <string>BottomRight</string> </map> - <key>UIImgBtnSpinDownOutUUID</key> + <key>UIButtonOrigHPad</key> <map> <key>Comment</key> - <string /> + <string>UI Button Original Horizontal Pad</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>b6d240dd-5602-426f-b606-bbb49a30726d</string> + <real>6</real> </map> - <key>UIImgBtnSpinUpInUUID</key> + <key>UICheckboxctrlBtnSize</key> <map> <key>Comment</key> - <string /> + <string>UI Checkbox Control Button Size</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c8450082-96a0-4319-8090-d3ff900b4954</string> + <real>13</real> </map> - <key>UIImgBtnSpinUpOutUUID</key> + <key>UICheckboxctrlHeight</key> <map> <key>Comment</key> - <string /> + <string>UI Checkbox Control Height</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>56576e6e-6710-4e66-89f9-471b59122794</string> + <real>16</real> </map> - <key>UIImgBtnTabBottomInUUID</key> + <key>UICheckboxctrlHPad</key> <map> <key>Comment</key> - <string /> + <string>UI Checkbox Control Horizontal Pad</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c001d8fd-a869-4b6f-86a1-fdcb106df9c7</string> + <real>2</real> </map> - <key>UIImgBtnTabBottomOutUUID</key> + <key>UICheckboxctrlSpacing</key> <map> <key>Comment</key> - <string /> + <string>UI Checkbox Control Spacing</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>bf0a8779-689b-48c3-bb9a-6af546366ef4</string> + <real>5</real> </map> - <key>UIImgBtnTabBottomPartialInUUID</key> + <key>UICheckboxctrlVPad</key> <map> <key>Comment</key> - <string /> + <string>UI Checkbox Control Vertical Pad</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>eb0b0904-8c91-4f24-b500-1180b91140de</string> + <real>2</real> </map> - <key>UIImgBtnTabBottomPartialOutUUID</key> + <key>UICloseBoxFromTop</key> <map> <key>Comment</key> - <string /> + <string>Distance from top of floater to top of close box icon, pixels</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>8dca716c-b29c-403a-9886-91c028357d6e</string> + <real>5</real> </map> - <key>UIImgBtnTabTopInUUID</key> + <key>UIExtraTriangleHeight</key> <map> <key>Comment</key> - <string /> + <string>UI extra triangle height</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>16d032e8-817b-4368-8a4e-b7b947ae3889</string> + <real>-2</real> </map> - <key>UIImgBtnTabTopOutUUID</key> + <key>UIExtraTriangleWidth</key> <map> <key>Comment</key> - <string /> + <string>UI extra triangle width</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>1ed83f57-41cf-4052-a3b4-2e8bb78d8191</string> + <real>2</real> </map> - <key>UIImgBtnTabTopPartialInUUID</key> + <key>UIFloaterCloseBoxSize</key> <map> <key>Comment</key> - <string /> + <string>Size of UI floater close box size</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>7c6c6c26-0e25-4438-89bd-30d8b8e9d704</string> + <real>16</real> </map> - <key>UIImgBtnTabTopPartialOutUUID</key> + <key>UIFloaterHPad</key> <map> <key>Comment</key> - <string /> + <string>Size of UI floater horizontal pad</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>932ad585-0e45-4a57-aa23-4cf81beeb7b0</string> + <real>6</real> </map> - <key>UIImgBtnTearOffActiveUUID</key> + <key>UIFloaterTestBool</key> <map> <key>Comment</key> - <string /> + <string>Example saved setting for the test floater</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>Boolean</string> <key>Value</key> - <string>74e1a96f-4833-a24d-a1bb-1bce1468b0e7</string> - </map> - <key>UIImgBtnTearOffInactiveUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>74e1a96f-4833-a24d-a1bb-1bce1468b0e7</string> </map> - <key>UIImgBtnTearOffPressedUUID</key> + <key>UIFloaterTitleVPad</key> <map> <key>Comment</key> - <string /> + <string>Distance from top of floater to top of title string, pixels</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>d2524c13-4ba6-af7c-e305-8ac6cc18d86a</string> + <real>7</real> </map> - <key>UIImgCheckboxActiveSelectedUUID</key> + <key>UIImgDefaultEyesUUID</key> <map> <key>Comment</key> <string /> @@ -10055,9 +9144,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>cf4a2ed7-1533-4686-9dde-df9a37ddca55</string> + <string>6522e74d-1660-4e7f-b601-6f48c1659a77</string> </map> - <key>UIImgCheckboxActiveUUID</key> + <key>UIImgDefaultGlovesUUID</key> <map> <key>Comment</key> <string /> @@ -10066,9 +9155,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>05bb64ee-96fd-4243-b74e-f40a41bc53ba</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgCheckboxInactiveSelectedUUID</key> + <key>UIImgDefaultHairUUID</key> <map> <key>Comment</key> <string /> @@ -10077,9 +9166,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>c817c642-9abd-4236-9287-ae0513fe7d2b</string> + <string>7ca39b4c-bd19-4699-aff7-f93fd03d3e7b</string> </map> - <key>UIImgCheckboxInactiveUUID</key> + <key>UIImgDefaultJacketUUID</key> <map> <key>Comment</key> <string /> @@ -10088,9 +9177,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>7d94cb59-32a2-49bf-a516-9e5a2045f9d9</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgCreateSelectedUUID</key> + <key>UIImgDefaultPantsUUID</key> <map> <key>Comment</key> <string /> @@ -10099,9 +9188,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>0098b015-3daf-4cfe-a72f-915369ea97c2</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgCreateUUID</key> + <key>UIImgDefaultShirtUUID</key> <map> <key>Comment</key> <string /> @@ -10110,20 +9199,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b</string> - </map> - <key>UIImgCrosshairsUUID</key> - <map> - <key>Comment</key> - <string>Image to use for crosshair display (UUID texture reference)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>6e1a3980-bf2d-4274-8970-91e60d85fb52</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultEyesUUID</key> + <key>UIImgDefaultShoesUUID</key> <map> <key>Comment</key> <string /> @@ -10132,9 +9210,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>6522e74d-1660-4e7f-b601-6f48c1659a77</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultGlovesUUID</key> + <key>UIImgDefaultSkirtUUID</key> <map> <key>Comment</key> <string /> @@ -10145,7 +9223,7 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultHairUUID</key> + <key>UIImgDefaultSocksUUID</key> <map> <key>Comment</key> <string /> @@ -10154,9 +9232,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>7ca39b4c-bd19-4699-aff7-f93fd03d3e7b</string> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultJacketUUID</key> + <key>UIImgDefaultAlphaUUID</key> <map> <key>Comment</key> <string /> @@ -10167,7 +9245,7 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultPantsUUID</key> + <key>UIImgDefaultUnderwearUUID</key> <map> <key>Comment</key> <string /> @@ -10178,7 +9256,7 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultShirtUUID</key> + <key>StartUpChannelUUID</key> <map> <key>Comment</key> <string /> @@ -10187,9 +9265,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> - </map> - <key>UIImgDefaultShoesUUID</key> + <string>B56AF90D-6684-48E4-B1E4-722D3DEB2CB6</string> + </map> + <key>NearByChatChannelUUID</key> <map> <key>Comment</key> <string /> @@ -10198,9 +9276,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> - </map> - <key>UIImgDefaultSkirtUUID</key> + <string>E1158BD6-661C-4981-9DAD-4DCBFF062502</string> + </map> + <key>NotificationChannelUUID</key> <map> <key>Comment</key> <string /> @@ -10209,9 +9287,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> - </map> - <key>UIImgDefaultSocksUUID</key> + <string>AEED3193-8709-4693-8558-7452CCA97AE5</string> + </map> + <key>AlertChannelUUID</key> <map> <key>Comment</key> <string /> @@ -10220,9 +9298,9 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> - </map> - <key>UIImgDefaultUnderwearUUID</key> + <string>F3E07BC8-A973-476D-8C7F-F3B7293975D1</string> + </map> + <key>UIImgWhiteUUID</key> <map> <key>Comment</key> <string /> @@ -10233,225 +9311,214 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDirectionArrowUUID</key> + <key>UILineEditorCursorThickness</key> <map> <key>Comment</key> - <string /> + <string>UI Line Editor Cursor Thickness</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>586383e8-4d9b-4fba-9196-2b5938e79c2c</string> - </map> - <key>UIImgFaceSelectedUUID</key> + <integer>2</integer> + </map> + <key>UIMaxComboWidth</key> <map> <key>Comment</key> - <string /> + <string>Maximum width of combo box</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>b4870163-6208-42a9-9801-93133bf9a6cd</string> + <real>500</real> </map> - <key>UIImgFaceUUID</key> + <key>UIMinimizedWidth</key> <map> <key>Comment</key> - <string /> + <string>Size of UI floater minimized width</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>ce15fd63-b0b6-463c-a37d-ea6393208b3e</string> + <real>160</real> </map> - <key>UIImgFocusSelectedUUID</key> + <key>UIMultiSliderctrlSpacing</key> <map> <key>Comment</key> - <string /> + <string>UI multi slider ctrl spacing</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>ab6a730e-ddfd-4982-9a32-c6de3de6d31d</string> + <real>4</real> </map> - <key>UIImgFocusUUID</key> + <key>UIMultiTrackHeight</key> <map> <key>Comment</key> - <string /> + <string>UI multi track height</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>57bc39d1-288c-4519-aea6-6d1786a5c274</string> + <real>6</real> </map> - <key>UIImgGrabSelectedUUID</key> + <key>UIPreeditMarkerBrightness</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Marker Brightness</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>F32</string> <key>Value</key> - <string>c1e21504-f136-451d-b8e9-929037812f1d</string> + <real>0.4</real> </map> - <key>UIImgGrabUUID</key> + <key>UIPreeditMarkerGap</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Marker Gap</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c63f124c-6340-4fbf-b59e-0869a44adb64</string> + <real>1</real> </map> - <key>UIImgMoveSelectedUUID</key> + <key>UIPreeditMarkerPosition</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Marker Position</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>46f17c7b-8381-48c3-b628-6a406e060dd6</string> + <integer>4</integer> </map> - <key>UIImgMoveUUID</key> + <key>UIPreeditMarkerThickness</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Marker Thickness</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>2fa5dc06-bcdd-4e09-a426-f9f262d4fa65</string> + <real>1</real> </map> - <key>UIImgRadioActiveSelectedUUID</key> + <key>UIPreeditStandoutBrightness</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Standout Brightness</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>F32</string> <key>Value</key> - <string>52f09e07-5816-4052-953c-94c6c10479b7</string> + <real>0.6</real> </map> - <key>UIImgRadioActiveUUID</key> + <key>UIPreeditStandoutGap</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Standout Gap</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f</string> + <real>1</real> </map> - <key>UIImgRadioInactiveSelectedUUID</key> + <key>UIPreeditStandoutPosition</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Standout Position</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>1975db39-aa29-4251-aea0-409ac09d414d</string> + <integer>4</integer> </map> - <key>UIImgRadioInactiveUUID</key> + <key>UIPreeditStandoutThickness</key> <map> <key>Comment</key> - <string /> + <string>UI Preedit Standout Thickness</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>90688481-67ff-4af0-be69-4aa084bcad1e</string> + <integer>2</integer> </map> - <key>UIImgResizeBottomRightUUID</key> + <key>UIResizeBarHeight</key> <map> <key>Comment</key> - <string /> + <string>Size of UI resize bar height</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>e3690e25-9690-4f6c-a745-e7dcd885285a</string> + <real>3</real> </map> - <key>UIImgRotateSelectedUUID</key> + <key>UIResizeBarOverlap</key> <map> <key>Comment</key> - <string /> + <string>Size of UI resize bar overlap</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>cdfb7fde-0d13-418a-9d89-2bd91019fc95</string> + <real>1</real> </map> - <key>UIImgRotateUUID</key> + <key>UIScaleFactor</key> <map> <key>Comment</key> - <string /> + <string>Size of UI relative to default layout on 1024x768 screen</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>F32</string> <key>Value</key> - <string>c34b1eaa-aae3-4351-b082-e26c0b636779</string> + <real>1.0</real> </map> - <key>UIImgScaleSelectedUUID</key> + <key>UIScrollbarSize</key> <map> <key>Comment</key> - <string /> + <string>UI scrollbar size</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>55aa57ef-508a-47f7-8867-85d21c5a810d</string> + <real>15</real> </map> - <key>UIImgScaleUUID</key> + <key>UISliderctrlHeight</key> <map> <key>Comment</key> - <string /> + <string>UI slider ctrl height</string> <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>88a90fef-b448-4883-9344-ecf378a60433</string> - </map> - <key>UIImgWhiteUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> + <real>16</real> </map> - <key>UIScaleFactor</key> + <key>UISliderctrlSpacing</key> <map> <key>Comment</key> - <string>Size of UI relative to default layout on 1024x768 screen</string> + <string>UI slider ctrl spacing</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>S32</string> <key>Value</key> - <real>1.0</real> + <real>4</real> </map> <key>UISndAlert</key> <map> @@ -10640,181 +9707,214 @@ <key>Value</key> <string>00000000-0000-0000-0000-000000000000</string> </map> - <key>UISndPieMenuAppear</key> + <key>UISndSnapshot</key> <map> <key>Comment</key> - <string>Sound file for opening pie menu (uuid for sound asset)</string> + <string>Sound file for taking a snapshot (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>8eaed61f-92ff-6485-de83-4dcc938a478e</string> + <string>3d09f582-3851-c0e0-f5ba-277ac5c73fb4</string> </map> - <key>UISndPieMenuHide</key> + <key>UISndStartIM</key> <map> <key>Comment</key> - <string>Sound file for closing pie menu (uuid for sound asset)</string> + <string>Sound file for starting a new IM session (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>00000000-0000-0000-0000-000000000000</string> + <string>c825dfbc-9827-7e02-6507-3713d18916c1</string> </map> - <key>UISndPieMenuSliceHighlight0</key> + <key>UISndTeleportOut</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 0 (uuid for sound asset)</string> + <string>Sound file for teleporting (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>d9f73cf8-17b4-6f7a-1565-7951226c305d</string> + <string>d7a9a565-a013-2a69-797d-5332baa1a947</string> </map> - <key>UISndPieMenuSliceHighlight1</key> + <key>UISndTyping</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 1 (uuid for sound asset)</string> + <string>Sound file for starting to type a chat message (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>f6ba9816-dcaf-f755-7b67-51b31b6233e5</string> + <string>5e191c7b-8996-9ced-a177-b2ac32bfea06</string> </map> - <key>UISndPieMenuSliceHighlight2</key> + <key>UISndWindowClose</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 2 (uuid for sound asset)</string> + <string>Sound file for closing a window (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>7aff2265-d05b-8b72-63c7-dbf96dc2f21f</string> + <string>2c346eda-b60c-ab33-1119-b8941916a499</string> </map> - <key>UISndPieMenuSliceHighlight3</key> + <key>UISndWindowOpen</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 3 (uuid for sound asset)</string> + <string>Sound file for opening a window (uuid for sound asset)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>09b2184e-8601-44e2-afbb-ce37434b8ba1</string> + <string>c80260ba-41fd-8a46-768a-6bf236360e3a</string> </map> - <key>UISndPieMenuSliceHighlight4</key> + <key>UISpinctrlBtnHeight</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 4 (uuid for sound asset)</string> + <string>UI spin control button height</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>bbe4c7fc-7044-b05e-7b89-36924a67593c</string> + <integer>11</integer> </map> - <key>UISndPieMenuSliceHighlight5</key> + <key>UISpinctrlBtnWidth</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 5 (uuid for sound asset)</string> + <string>UI spin control button width</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>d166039b-b4f5-c2ec-4911-c85c727b016c</string> + <integer>16</integer> </map> - <key>UISndPieMenuSliceHighlight6</key> + <key>UISpinctrlDefaultLabelWidth</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 6 (uuid for sound asset)</string> + <string>UI spin control default label width</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>242af82b-43c2-9a3b-e108-3b0c7e384981</string> + <integer>10</integer> </map> - <key>UISndPieMenuSliceHighlight7</key> + <key>UISpinctrlSpacing</key> <map> <key>Comment</key> - <string>Sound file for selecting pie menu item 7 (uuid for sound asset)</string> + <string>UI spin control spacing</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c1f334fb-a5be-8fe7-22b3-29631c21cf0b</string> + <integer>2</integer> </map> - <key>UISndSnapshot</key> + <key>UITabCntrArrowBtnSize</key> <map> <key>Comment</key> - <string>Sound file for taking a snapshot (uuid for sound asset)</string> + <string>UI Tab Container Arrow Button Size</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>3d09f582-3851-c0e0-f5ba-277ac5c73fb4</string> + <integer>16</integer> </map> - <key>UISndStartIM</key> + <key>UITabCntrvArrowBtnSize</key> <map> <key>Comment</key> - <string>Sound file for starting a new IM session (uuid for sound asset)</string> + <string>UI Tab Container V Arrow Button Size</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c825dfbc-9827-7e02-6507-3713d18916c1</string> + <integer>16</integer> </map> - <key>UISndTeleportOut</key> + <key>UITabCntrvPad</key> <map> <key>Comment</key> - <string>Sound file for teleporting (uuid for sound asset)</string> + <string>UI Tab Container V Pad</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>d7a9a565-a013-2a69-797d-5332baa1a947</string> + <integer>0</integer> </map> - <key>UISndTyping</key> + <key>UITabCntrButtonPanelOverlap</key> <map> <key>Comment</key> - <string>Sound file for starting to type a chat message (uuid for sound asset)</string> + <string>UI Tab Container Button Panel Overlap</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>5e191c7b-8996-9ced-a177-b2ac32bfea06</string> + <integer>1</integer> </map> - <key>UISndWindowClose</key> + <key>UITabCntrCloseBtnSize</key> <map> <key>Comment</key> - <string>Sound file for closing a window (uuid for sound asset)</string> + <string>UI Tab Container Close Button Size</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>2c346eda-b60c-ab33-1119-b8941916a499</string> + <integer>16</integer> </map> - <key>UISndWindowOpen</key> + <key>UITabCntrTabHPad</key> <map> <key>Comment</key> - <string>Sound file for opening a window (uuid for sound asset)</string> + <string>UI Tab Container Tab Horizontal Pad</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>String</string> + <string>S32</string> <key>Value</key> - <string>c80260ba-41fd-8a46-768a-6bf236360e3a</string> + <integer>4</integer> + </map> + <key>UITabCntrTabPartialWidth</key> + <map> + <key>Comment</key> + <string>UI Tab Container Tab Partial Width</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>12</integer> + </map> + <key>UITabCntrVertTabMinWidth</key> + <map> + <key>Comment</key> + <string>UI Tab Container Vertical Tab Minimum Width</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>100</integer> + </map> + <key>UITabPadding</key> + <map> + <key>Comment</key> + <string>UI Tab Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>15</integer> </map> <key>UploadBakedTexOld</key> <map> @@ -10849,6 +9949,28 @@ <key>Value</key> <integer>0</integer> </map> + <key>UseCircuitCodeMaxRetries</key> + <map> + <key>Comment</key> + <string>Max timeout count for the initial UseCircuitCode message</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <real>3</real> + </map> + <key>UseCircuitCodeTimeout</key> + <map> + <key>Comment</key> + <string>Timeout duration in seconds for the initial UseCircuitCode message</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>5.0</real> + </map> <key>UseDebugLogin</key> <map> <key>Comment</key> @@ -10937,6 +10059,18 @@ <key>Value</key> <integer>1</integer> </map> + <key>SpeakerParticipantRemoveDelay</key> + <map> + <key>Comment</key> + <string>Timeout to remove participants who is not in channel before removed from list of active speakers (text/voice chat)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> + <key>UseStartScreen</key> <map> <key>Comment</key> @@ -11086,7 +10220,7 @@ <key>Comment</key> <string>Versioning Channel Name.</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>String</string> <key>Value</key> @@ -11169,6 +10303,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>VoiceDefaultInternalLevel</key> + <map> + <key>Comment</key> + <string>Internal level of voice set by default. Is equivalent to 0.5 (from 0.0-1.0 range) external voice level (internal = 400 * external^2).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>100</integer> + </map> <key>VoiceEarLocation</key> <map> <key>Comment</key> @@ -11290,346 +10435,49 @@ <key>Value</key> <string>Default</string> </map> - <key>VoicePort</key> + <key>VoiceParticipantLeftRemoveDelay</key> <map> <key>Comment</key> - <string>Client SLVoice port to connect to</string> + <string>Timeout to remove participants who has left Voice chat from the list in Voice Controls Panel</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>U32</string> + <string>S32</string> <key>Value</key> - <integer>44125</integer> + <integer>10</integer> </map> - <key>WLSkyDetail</key> + <key>VoicePort</key> <map> <key>Comment</key> - <string>Controls vertex detail on the WindLight sky. Lower numbers will give better performance and uglier skies.</string> + <string>Client SLVoice port to connect to</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>U32</string> <key>Value</key> - <integer>64</integer> - </map> - <key>WarnAboutBadPCI</key> - <map> - <key>Comment</key> - <string>Enables AboutBadPCI warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnAboutDirectX9</key> - <map> - <key>Comment</key> - <string>Enables AboutDirectX9 warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnAboutOldGraphicsDriver</key> - <map> - <key>Comment</key> - <string>Enables AboutOldGraphicsDriver warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnAboutPCIGraphics</key> - <map> - <key>Comment</key> - <string>Enables AboutPCIGraphics warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnBrowserLaunch</key> - <map> - <key>Comment</key> - <string>Enables BrowserLaunch warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnDeedObject</key> - <map> - <key>Comment</key> - <string>Enables DeedObject warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstAppearance</key> - <map> - <key>Comment</key> - <string>Enables FirstAppearance warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstAttach</key> - <map> - <key>Comment</key> - <string>Enables FirstAttach warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstBalanceDecrease</key> - <map> - <key>Comment</key> - <string>Enables FirstBalanceDecrease warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstBalanceIncrease</key> - <map> - <key>Comment</key> - <string>Enables FirstBalanceIncrease warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstBuild</key> - <map> - <key>Comment</key> - <string>Enables FirstBuild warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstDebugMenus</key> - <map> - <key>Comment</key> - <string>Enables FirstDebugMenus warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstFlexible</key> - <map> - <key>Comment</key> - <string>Enables FirstFlexible warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstGoTo</key> - <map> - <key>Comment</key> - <string>Enables FirstGoTo warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstInventory</key> - <map> - <key>Comment</key> - <string>Enables FirstInventory warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstLeftClickNoHit</key> - <map> - <key>Comment</key> - <string>Enables FirstLeftClickNoHit warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstMap</key> - <map> - <key>Comment</key> - <string>Enables FirstMap warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstMedia</key> - <map> - <key>Comment</key> - <string>Enables FirstMedia warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstOverrideKeys</key> - <map> - <key>Comment</key> - <string>Enables FirstOverrideKeys warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstSandbox</key> - <map> - <key>Comment</key> - <string>Enables FirstSandbox warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstSculptedPrim</key> - <map> - <key>Comment</key> - <string>Enables FirstSculptedPrim warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstSit</key> - <map> - <key>Comment</key> - <string>Enables FirstSit warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstStreamingMusic</key> - <map> - <key>Comment</key> - <string>Enables FirstStreamingMusic warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstStreamingVideo</key> - <map> - <key>Comment</key> - <string>Enables FirstStreamingVideo warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstTeleport</key> - <map> - <key>Comment</key> - <string>Enables FirstTeleport warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnFirstVoice</key> - <map> - <key>Comment</key> - <string>Enables FirstVoice warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>WarnNewClassified</key> - <map> - <key>Comment</key> - <string>Enables NewClassified warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> + <integer>44125</integer> </map> - <key>WarnQuickTimeInstalled</key> + <key>WarningsAsChat</key> <map> <key>Comment</key> - <string>Enables QuickTimeInstalled warning dialog</string> + <string>Display warning messages in chat history</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> - <key>WarnReturnToOwner</key> + <key>WLSkyDetail</key> <map> <key>Comment</key> - <string>Enables ReturnToOwner warning dialog</string> + <string>Controls vertex detail on the WindLight sky. Lower numbers will give better performance and uglier skies.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>U32</string> <key>Value</key> - <integer>1</integer> + <integer>64</integer> </map> <key>WatchdogEnabled</key> <map> @@ -11697,6 +10545,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>WindowFullScreen</key> + <map> + <key>Comment</key> + <string>Run SL in fullscreen mode</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>WindowHeight</key> <map> <key>Comment</key> @@ -11763,6 +10622,17 @@ <key>Value</key> <real>150000.0</real> </map> + <key>XUIEditor</key> + <map> + <key>Comment</key> + <string>Path to program used to edit XUI files</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <real>150000.0</real> + </map> <key>YawFromMousePosition</key> <map> <key>Comment</key> @@ -11774,6 +10644,17 @@ <key>Value</key> <real>90.0</real> </map> + <key>YouAreHereDistance</key> + <map> + <key>Comment</key> + <string>Radius of distance for banner that indicates if the resident is "on" the Place.(meters from avatar to requested place)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> <key>YieldTime</key> <map> <key>Comment</key> @@ -11807,22 +10688,6 @@ <key>Value</key> <real>0.40000000596</real> </map> - <key>llOwnerSayChatColor</key> - <map> - <key>Comment</key> - <string>Color of chat messages from objects only visible to the owner</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.990000009537</real> - <real>0.990000009537</real> - <real>0.689999997616</real> - <real>1.0</real> - </array> - </map> <key>particlesbeacon</key> <map> <key>Comment</key> @@ -11889,6 +10754,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>ShowDeviceSettings</key> + <map> + <key>Comment</key> + <string>Show device settings</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>soundsbeacon</key> <map> <key>Comment</key> @@ -11900,5 +10776,38 @@ <key>Value</key> <integer>0</integer> </map> - </map> + <key>LogTextureDownloadsToViewerLog</key> + <map> + <key>Comment</key> + <string>Send texture download details to the viewer log</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>LogTextureDownloadsToSimulator</key> + <map> + <key>Comment</key> + <string>Send a digest of texture info to the sim</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>TextureLoggingThreshold</key> + <map> + <key>Comment</key> + <string>Specifies the byte threshold at which texture download data should be sent to the sim.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>1</integer> + </map> +</map> </llsd> diff --git a/indra/newview/app_settings/settings_files.xml b/indra/newview/app_settings/settings_files.xml index ec55745358..aa5b301959 100644 --- a/indra/newview/app_settings/settings_files.xml +++ b/indra/newview/app_settings/settings_files.xml @@ -4,10 +4,10 @@ <map> <!-- The Locations LLSD block specifies the usage pattern of - the settings file types listed above. + the settings file types Each location is represented by a LLSD containing the following values: PathIndex = hard coded path indicies. - Files = map of files to load, from above 'Files' section. + Files = map of files to load Each file can have: Requirement = level of necessity for loading. 0 ( or Req. no key) = do not load @@ -50,6 +50,13 @@ <key>Requirement</key> <integer>1</integer> </map> + <key>Warnings</key> + <map> + <key>Name</key> + <string>ignorable_dialogs.xml</string> + <key>Requirement</key> + <integer>1</integer> + </map> </map> </map> <key>User</key> @@ -70,6 +77,13 @@ <key>Name</key> <string>settings_crash_behavior.xml</string> </map> + <key>Warnings</key> + <map> + <key>Name</key> + <string>ignorable_dialogs.xml</string> + <key>NameFromSetting</key> + <string>WarningSettingsFile</string> + </map> </map> </map> <key>Account</key> @@ -82,6 +96,49 @@ <map> <key>Name</key> <string>settings_per_account.xml</string> + <key>NameFromSetting</key> + <string>PerAccountSettingsFile</string> + </map> + </map> + </map> + <key>DefaultSkin</key> + <map> + <key>PathIndex</key> + <integer>17</integer> + <key>Files</key> + <map> + <key>Skinning</key> + <map> + <key>Name</key> + <string>colors.xml</string> + </map> + </map> + </map> + <key>CurrentSkin</key> + <map> + <key>PathIndex</key> + <integer>10</integer> + <key>Files</key> + <map> + <key>Skinning</key> + <map> + <key>Name</key> + <string>colors.xml</string> + </map> + </map> + </map> + <key>UserSkin</key> + <map> + <key>PathIndex</key> + <integer>14</integer> + <key>Files</key> + <map> + <key>Skinning</key> + <map> + <key>Name</key> + <string>colors.xml</string> + <key>NameFromSetting</key> + <string>SkinningSettingsFile</string> </map> </map> </map> diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index dab88a5ec3..af5fa4f388 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -22,17 +22,17 @@ <key>Value</key> <string>|TOKEN COPY BusyModeResponse|</string> </map> - <key>IMLogTimestamp</key> + <key>InstantMessageLogFolder</key> <map> <key>Comment</key> - <string>Log Timestamp of Instant Messages</string> + <string>Top level folder to your log files.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>String</string> <key>Value</key> - <integer>1</integer> - </map> + <string /> + </map> <key>InstantMessageLogPath</key> <map> <key>Comment</key> @@ -64,29 +64,18 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> - </map> - <key>LogChatIM</key> - <map> - <key>Comment</key> - <string>Log Incoming Instant Messages with Chat</string> - <key>Persist</key> <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> </map> - <key>LogChatTimestamp</key> + <key>LogTimestamp</key> <map> <key>Comment</key> - <string>Log Timestamp of Chat</string> + <string>Log Timestamp</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>LogInstantMessages</key> <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index a91e9fa15b..4fb109d687 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -8,14 +8,10 @@ #extension GL_ARB_texture_rectangle : enable uniform sampler2D diffuseMap; -uniform sampler2DShadow shadowMap0; -uniform sampler2DShadow shadowMap1; -uniform sampler2DShadow shadowMap2; -uniform sampler2DShadow shadowMap3; uniform sampler2D noiseMap; -uniform sampler2DRect positionMap; +uniform sampler2DRect depthMap; -uniform mat4 shadow_matrix[4]; +uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform vec2 screen_res; @@ -26,52 +22,42 @@ varying vec3 vary_ambient; varying vec3 vary_directional; varying vec3 vary_fragcoord; varying vec3 vary_position; +varying vec3 vary_light; uniform float alpha_soften; +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + void main() { vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; frag *= screen_res; - vec3 samp_pos = texture2DRect(positionMap, frag).xyz; + vec3 samp_pos = getPosition(frag).xyz; - float shadow = 1.0; vec4 pos = vec4(vary_position, 1.0); - if (pos.z > -shadow_clip.w) - { - if (pos.z < -shadow_clip.z) - { - vec4 lpos = shadow_matrix[3]*pos; - shadow = shadow2DProj(shadowMap3, lpos).x; - shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); - } - else if (pos.z < -shadow_clip.y) - { - vec4 lpos = shadow_matrix[2]*pos; - shadow = shadow2DProj(shadowMap2, lpos).x; - } - else if (pos.z < -shadow_clip.x) - { - vec4 lpos = shadow_matrix[1]*pos; - shadow = shadow2DProj(shadowMap1, lpos).x; - } - else - { - vec4 lpos = shadow_matrix[0]*pos; - shadow = shadow2DProj(shadowMap0, lpos).x; - } - } - - vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a); + vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a); vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col; color.rgb = atmosLighting(color.rgb); color.rgb = scaleSoftClip(color.rgb); - if (samp_pos.z != 0.0) + if (samp_pos.z != 0.0 && gl_Color.a < 1.0) { float dist_factor = alpha_soften; float a = gl_Color.a; @@ -83,6 +69,7 @@ void main() //gl_FragColor = gl_Color; gl_FragColor = color; //gl_FragColor = vec4(1,0,1,1); + //gl_FragColor = vec4(1,0,1,1)*shadow; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index b496bd674f..1a7d58b07b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -20,8 +20,11 @@ varying vec3 vary_ambient; varying vec3 vary_directional; varying vec3 vary_fragcoord; varying vec3 vary_position; +varying vec3 vary_light; uniform float near_clip; +uniform float shadow_offset; +uniform float shadow_bias; void main() { @@ -32,8 +35,9 @@ void main() vec4 pos = (gl_ModelViewMatrix * gl_Vertex); vec3 norm = normalize(gl_NormalMatrix * gl_Normal); - vary_position = pos.xyz; + vary_position = pos.xyz + norm.xyz * (-pos.z/64.0*shadow_offset+shadow_bias); + calcAtmospherics(pos.xyz); //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); @@ -54,6 +58,8 @@ void main() col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz); col.rgb = scaleDownLight(col.rgb); + vary_light = gl_LightSource[0].position.xyz; + vary_ambient = col.rgb*gl_Color.rgb; vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl index 6c94f5c5a7..ff64a6b0c3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl @@ -12,7 +12,7 @@ uniform sampler2DShadow shadowMap2; uniform sampler2DShadow shadowMap3; uniform sampler2D noiseMap; -uniform mat4 shadow_matrix[4]; +uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; vec3 atmosLighting(vec3 light); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl index 58aa5a9cb5..75df388941 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl @@ -8,13 +8,18 @@ uniform sampler2D diffuseMap; varying vec3 vary_normal; -varying vec4 vary_position; void main() { - gl_FragData[0] = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 diff = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy); + + if (diff.a < 0.2) + { + discard; + } + + gl_FragData[0] = vec4(diff.rgb, 0.0); gl_FragData[1] = vec4(0,0,0,0); - gl_FragData[2] = vec4(normalize(vary_normal), 0.0); - gl_FragData[3] = vary_position; + gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl index 27c09db922..00083eb6b3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl @@ -10,6 +10,7 @@ uniform sampler2D diffuseMap; void main() { - gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy)); + gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a); + //gl_FragColor = vec4(1,1,1,1); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl index 14da6b1ad4..8c8489d087 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl @@ -28,8 +28,7 @@ void main() norm = normalize(norm); pos = gl_ProjectionMatrix * pos; - //smash geometry against near clip plane - pos.z = max(pos.z, -1.0); + pos.z = max(pos.z, -pos.w+0.01); gl_Position = pos; gl_FrontColor = gl_Color; diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl index 12a7ff7f29..471a1f0407 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl @@ -10,7 +10,6 @@ mat4 getSkinnedTransform(); attribute vec4 weight; varying vec3 vary_normal; -varying vec4 vary_position; void main() { @@ -30,7 +29,6 @@ void main() norm.z = dot(trans[2].xyz, gl_Normal); norm = normalize(norm); - vary_position = pos; vary_normal = norm; gl_Position = gl_ProjectionMatrix * pos; diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index 3c6700a871..bd5e9dd758 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl @@ -7,10 +7,12 @@ #extension GL_ARB_texture_rectangle : enable -uniform sampler2DRect positionMap; +uniform sampler2DRect depthMap; uniform sampler2DRect normalMap; uniform sampler2DRect lightMap; +uniform sampler2DRect giLightMap; +uniform float dist_factor; uniform float blur_size; uniform vec2 delta; uniform vec3 kern[32]; @@ -19,30 +21,52 @@ uniform float kern_scale; varying vec2 vary_fragcoord; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + void main() { - vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz; - vec3 pos = texture2DRect(positionMap, vary_fragcoord.xy).xyz; - vec2 ccol = texture2DRect(lightMap, vary_fragcoord.xy).rg; + vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; + vec3 pos = getPosition(vary_fragcoord.xy).xyz; + vec4 ccol = texture2DRect(lightMap, vary_fragcoord.xy).rgba; vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy); + dlt /= max(-pos.z*dist_factor, 1.0); + vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free' - vec2 col = defined_weight * ccol; + vec4 col = defined_weight.xyxx * ccol; for (int i = 1; i < kern_length; i++) { vec2 tc = vary_fragcoord.xy + kern[i].z*dlt; - vec3 samppos = texture2DRect(positionMap, tc).xyz; + vec3 samppos = getPosition(tc).xyz; float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane if (d*d <= 0.003) { - col += texture2DRect(lightMap, tc).rg*kern[i].xy; + col += texture2DRect(lightMap, tc)*kern[i].xyxx; defined_weight += kern[i].xy; } } - col /= defined_weight; - gl_FragColor = vec4(col.r, col.g, 0.0, 1.0); + + col /= defined_weight.xyxx; + + gl_FragColor = col; + + //gl_FragColor = ccol; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl index a8712bc8cc..1c29dae5f7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl @@ -11,7 +11,6 @@ uniform sampler2D bumpMap; varying vec3 vary_mat0; varying vec3 vary_mat1; varying vec3 vary_mat2; -varying vec4 vary_position; void main() { @@ -22,8 +21,7 @@ void main() dot(norm,vary_mat1), dot(norm,vary_mat2)); - gl_FragData[0].rgb = gl_Color.rgb*col; - gl_FragData[1] = vec4(col*(gl_Color.a*1.5), gl_Color.a); - gl_FragData[2] = vec4(normalize(tnorm), 0.0); - gl_FragData[3] = vary_position; + gl_FragData[0] = vec4(gl_Color.rgb*col, 0.0); + gl_FragData[1] = vec4(col*gl_Color.a, gl_Color.a); + gl_FragData[2] = vec4(normalize(tnorm)*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl index ba180922cc..9589912c6c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl @@ -8,7 +8,6 @@ varying vec3 vary_mat0; varying vec3 vary_mat1; varying vec3 vary_mat2; -varying vec4 vary_position; void main() { @@ -16,8 +15,6 @@ void main() gl_Position = ftransform(); gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vary_position = gl_ModelViewMatrix * gl_Vertex; - vec3 n = normalize(gl_NormalMatrix * gl_Normal); vec3 b = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz); vec3 t = cross(b, n); diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl index f2ba2df69a..5895ebda84 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl @@ -8,13 +8,11 @@ uniform sampler2D diffuseMap; varying vec3 vary_normal; -varying vec4 vary_position; void main() { vec3 col = texture2D(diffuseMap, gl_TexCoord[0].xy).rgb; - gl_FragData[0] = vec4(gl_Color.rgb*col, 1.0); + gl_FragData[0] = vec4(gl_Color.rgb*col, 0.0); gl_FragData[1] = vec4(col*(gl_Color.a*1.5), gl_Color.a); - gl_FragData[2] = vec4(normalize(vary_normal), 0.0); - gl_FragData[3] = vary_position; + gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl index 3413a7f9d6..44468cdfa2 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl @@ -6,16 +6,13 @@ */ varying vec3 vary_normal; -varying vec4 vary_position; void main() { //transform vertex - gl_Position = ftransform(); + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vary_position = gl_ModelViewMatrix * gl_Vertex; - vary_normal = normalize(gl_NormalMatrix * gl_Normal); gl_FrontColor = gl_Color; diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 2a811c5897..e518bddb98 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -8,14 +8,9 @@ #extension GL_ARB_texture_rectangle : enable uniform sampler2D diffuseMap; -uniform sampler2DShadow shadowMap0; -uniform sampler2DShadow shadowMap1; -uniform sampler2DShadow shadowMap2; -uniform sampler2DShadow shadowMap3; +uniform sampler2DRect depthMap; uniform sampler2D noiseMap; -uniform sampler2DRect positionMap; -uniform mat4 shadow_matrix[4]; uniform vec4 shadow_clip; uniform vec2 screen_res; @@ -30,12 +25,27 @@ varying vec3 vary_fragcoord; uniform float alpha_soften; +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + void main() { vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; frag *= screen_res; - vec3 samp_pos = texture2DRect(positionMap, frag).xyz; + vec3 samp_pos = getPosition(frag).xyz; float shadow = 1.0; vec4 pos = vary_position; @@ -46,10 +56,10 @@ void main() color.rgb = fullbrightScaleSoftClip(color.rgb); - if (samp_pos.z != 0.0) + if (samp_pos.z != 0.0 && color.a < 1.0) { float dist_factor = alpha_soften; - float a = gl_Color.a; + float a = color.a; a *= a; dist_factor *= 1.0/(1.0-a); color.a *= min((pos.z-samp_pos.z)*dist_factor, 1.0); diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index 6381a1ced8..aff51178b0 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl @@ -12,12 +12,12 @@ vec3 atmosAffectDirectionalLight(float lightIntensity); vec3 scaleDownLight(vec3 light); vec3 scaleUpLight(vec3 light); -varying vec4 vary_position; varying vec3 vary_ambient; varying vec3 vary_directional; varying vec3 vary_normal; varying vec3 vary_fragcoord; uniform float near_clip; +varying vec4 vary_position; void main() { diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl new file mode 100644 index 0000000000..b351eec6e5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl @@ -0,0 +1,165 @@ +/** + * @file giF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2D noiseMap; + +uniform sampler2D diffuseGIMap; +uniform sampler2D normalGIMap; +uniform sampler2D depthGIMap; + +uniform sampler2D lightFunc; + +// Inputs +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +uniform mat4 inv_proj; +uniform mat4 gi_mat; //gPipeline.mGIMatrix - eye space to sun space +uniform mat4 gi_mat_proj; //gPipeline.mGIMatrixProj - eye space to projected sun space +uniform mat4 gi_norm_mat; //gPipeline.mGINormalMatrix - eye space normal to sun space normal matrix +uniform mat4 gi_inv_proj; //gPipeline.mGIInvProj - projected sun space to sun space +uniform float gi_radius; +uniform float gi_intensity; +uniform int gi_samples; +uniform vec2 gi_kern[25]; +uniform vec2 gi_scale; +uniform vec3 gi_quad; +uniform vec3 gi_spec; +uniform float gi_direction_weight; +uniform float gi_light_offset; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec4 getGIPosition(vec2 gi_tc) +{ + float depth = texture2D(depthGIMap, gi_tc).a; + vec2 sc = gi_tc*2.0; + sc -= vec2(1.0, 1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = gi_inv_proj*ndc; + pos.xyz /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 giAmbient(vec3 pos, vec3 norm) +{ + vec4 gi_c = gi_mat_proj * vec4(pos, 1.0); + gi_c.xyz /= gi_c.w; + + vec4 gi_pos = gi_mat*vec4(pos,1.0); + vec3 gi_norm = (gi_norm_mat*vec4(norm,1.0)).xyz; + gi_norm = normalize(gi_norm); + + vec2 tcx = gi_norm.xy; + vec2 tcy = gi_norm.yx; + + vec4 eye_pos = gi_mat*vec4(0,0,0,1.0); + + vec3 eye_dir = normalize(gi_pos.xyz-eye_pos.xyz/eye_pos.w); + + //vec3 eye_dir = vec3(0,0,-1); + //eye_dir = (gi_norm_mat*vec4(eye_dir, 1.0)).xyz; + //eye_dir = normalize(eye_dir); + + //float round_x = gi_scale.x; + //float round_y = gi_scale.y; + + vec3 debug = texture2D(normalGIMap, gi_c.xy).rgb*0.5+0.5; + debug.xz = vec2(0.0,0.0); + //debug = fract(debug); + + float round_x = 1.0/64.0; + float round_y = 1.0/64.0; + + //gi_c.x = floor(gi_c.x/round_x+0.5)*round_x; + //gi_c.y = floor(gi_c.y/round_y+0.5)*round_y; + + float fda = 0.0; + vec3 fdiff = vec3(0,0,0); + + vec3 rcol = vec3(0,0,0); + + float fsa = 0.0; + + for (int i = -1; i < 2; i+=2 ) + { + for (int j = -1; j < 2; j+=2) + { + vec2 tc = vec2(i, j)*0.75; + vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0+tc*0.5).xyz; + //tc += gi_norm.xy*nz.z; + tc += nz.xy*2.0; + tc /= gi_samples; + tc += gi_c.xy; + + vec3 lnorm = -normalize(texture2D(normalGIMap, tc.xy).xyz*2.0-1.0); + vec3 lpos = getGIPosition(tc.xy).xyz; + + vec3 at = lpos-gi_pos.xyz; + float dist = dot(at,at); + float da = clamp(1.0/(gi_spec.x*dist), 0.0, 1.0); + + if (da > 0.0) + { + //add angular attenuation + vec3 ldir = at; + float ang_atten = clamp(dot(ldir, gi_norm), 0.0, 1.0); + + float ld = -dot(ldir, lnorm); + + if (ang_atten > 0.0 && ld < 0.0) + { + vec3 diff = texture2D(diffuseGIMap, tc.xy).xyz; + da = da*ang_atten; + fda += da; + fdiff += diff*da; + } + } + } + } + + fdiff /= max(gi_spec.y*fda, gi_quad.z); + fdiff = clamp(fdiff, vec3(0), vec3(1)); + + vec3 ret = fda*fdiff; + //ret = ret*ret*gi_quad.x+ret*gi_quad.y+gi_quad.z; + + //fda *= nz.z; + + //rcol.rgb *= gi_intensity; + //return rcol.rgb+vary_AmblitColor.rgb*0.25; + //return vec4(debug, 0.0); + //return vec4(fda*fdiff, 0.0); + return clamp(ret,vec3(0.0), vec3(1.0)); + //return debug.xyz; +} + +void main() +{ + vec2 pos_screen = vary_fragcoord.xy; + vec4 pos = getPosition(pos_screen); + vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0; + + gl_FragData[0].xyz = giAmbient(pos, norm); +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl new file mode 100644 index 0000000000..71dcea9628 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl @@ -0,0 +1,22 @@ +/** + * @file giV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res; + vec4 tex = gl_MultiTexCoord0; + tex.w = 1.0; + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index 20a3f3df5b..8c140a7b4f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl @@ -9,12 +9,9 @@ uniform sampler2D diffuseMap; uniform sampler2D normalMap; uniform sampler2D specularMap; -varying vec4 vary_position; - void main() { gl_FragData[0] = texture2D(diffuseMap, gl_TexCoord[0].xy); gl_FragData[1] = texture2D(specularMap, gl_TexCoord[0].xy); - gl_FragData[2] = vec4(texture2D(normalMap, gl_TexCoord[0].xy).xyz, vary_position.z); - gl_FragData[3] = vary_position; + gl_FragData[2] = vec4(texture2D(normalMap, gl_TexCoord[0].xy).xyz, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl index 9c5ae31541..57532a30b3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl @@ -5,15 +5,11 @@ * $License$ */ -varying vec4 vary_position; - void main() { //transform vertex gl_Position = ftransform(); gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vary_position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = gl_Color; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl new file mode 100644 index 0000000000..e8b53b0293 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl @@ -0,0 +1,15 @@ +/** + * @file luminanceF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform sampler2DRect diffuseMap; + +varying vec2 vary_fragcoord; + +void main() +{ + gl_FragColor = texture2DRect(diffuseMap, vary_fragcoord.xy); +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl new file mode 100644 index 0000000000..db8775f024 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl @@ -0,0 +1,20 @@ +/** + * @file giV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res; + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 3689d12840..797b9e9f3b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -7,13 +7,14 @@ #extension GL_ARB_texture_rectangle : enable +uniform sampler2DRect depthMap; uniform sampler2DRect diffuseRect; uniform sampler2DRect specularRect; -uniform sampler2DRect positionMap; uniform sampler2DRect normalMap; uniform samplerCube environmentMap; -uniform sampler2DRect lightMap; uniform sampler2D noiseMap; +uniform sampler2D lightFunc; + uniform vec3 env_mat[3]; uniform float sun_wash; @@ -23,24 +24,48 @@ uniform int light_count; uniform vec4 light[16]; uniform vec4 light_col[16]; -varying vec3 vary_fragcoord; +varying vec4 vary_fragcoord; uniform vec2 screen_res; +uniform float far_z; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + void main() { vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res; - vec3 pos = texture2DRect(positionMap, frag.xy).xyz; - vec3 norm = normalize(texture2DRect(normalMap, frag.xy).xyz); + vec3 pos = getPosition(frag.xy).xyz; + if (pos.z < far_z) + { + discard; + } + + vec3 norm = normalize(texture2DRect(normalMap, frag.xy).xyz*2.0-1.0); vec4 spec = texture2DRect(specularRect, frag.xy); vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb; float noise = texture2D(noiseMap, frag.xy/128.0).b; vec3 out_col = vec3(0,0,0); + vec3 npos = normalize(-pos); for (int i = 0; i < light_count; ++i) { vec3 lv = light[i].xyz-pos; float dist2 = dot(lv,lv); - if (dist2 > light[i].w) + dist2 /= light[i].w; + if (dist2 > 1.0) { continue; } @@ -55,29 +80,38 @@ void main() da = dot(norm, lv); float fa = light_col[i].a+1.0; - float dist_atten = clamp(1.0-(dist2-light[i].w*(1.0-fa))/(light[i].w*fa), 0.0, 1.0); + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); dist_atten *= noise; float lit = da * dist_atten; vec3 col = light_col[i].rgb*lit*diff; + //vec3 col = vec3(dist2, light_col[i].a, lit); if (spec.a > 0.0) { - vec3 ref = reflect(normalize(pos), norm); - float sa = dot(ref,lv); - sa = max(sa, 0.0); - sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0); - sa *= noise; - col += da*sa*light_col[i].rgb*spec.rgb; + //vec3 ref = dot(pos+lv, norm); + + float sa = dot(normalize(lv+npos),norm); + + if (sa > 0.0) + { + sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*light_col[i].rgb*spec.rgb; + } } out_col += col; } - //attenuate point light contribution by SSAO component - out_col *= texture2DRect(lightMap, frag.xy).g; + if (dot(out_col, out_col) <= 0.0) + { + discard; + } gl_FragColor.rgb = out_col; gl_FragColor.a = 0.0; + + //gl_FragColor = vec4(0.1, 0.025, 0.025/4.0, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl new file mode 100644 index 0000000000..28bcd720c0 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -0,0 +1,178 @@ +/** + * @file multiSpotLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + + +#version 120 + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform samplerCube environmentMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + vec3 pos = getPosition(frag.xy).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 > 1.0) + { + discard; + } + + vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z < 0.0) + { + discard; + } + + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex; + } + + float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + //float amb_da = mix(proj_ambiance, proj_ambiance*max(-da, 0.0), max(da, 0.0)); + float amb_da = proj_ambiance; + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec3 stc = (proj_mat * vec4(pfinal.xyz, 1.0)).xyz; + + if (stc.z > 0.0) + { + stc.xy /= stc.z+proj_near; + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb; + } + } + } + } + + /*if (spec.a > 0.0) + { + //vec3 ref = reflect(normalize(pos), norm); + float sa = dot(normalize(lv-normalize(pos)),norm);; + //sa = max(sa, 0.0); + //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0); + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*lcol*spec.rgb; + }*/ + + gl_FragColor.rgb = col; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 52bad1f34c..78256e20cc 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -9,33 +9,53 @@ uniform sampler2DRect diffuseRect; uniform sampler2DRect specularRect; -uniform sampler2DRect positionMap; uniform sampler2DRect normalMap; uniform samplerCube environmentMap; -uniform sampler2DRect lightMap; uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2DRect depthMap; uniform vec3 env_mat[3]; uniform float sun_wash; varying vec4 vary_light; -varying vec3 vary_fragcoord; +varying vec4 vary_fragcoord; uniform vec2 screen_res; +uniform mat4 inv_proj; +uniform vec4 viewport; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = (pos_screen.xy-viewport.xy)*2.0; + sc /= viewport.zw; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + void main() { - vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; - frag *= screen_res; - vec3 pos = texture2DRect(positionMap, frag).xyz; + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + vec3 pos = getPosition(frag.xy).xyz; vec3 lv = vary_light.xyz-pos; float dist2 = dot(lv,lv); - if (dist2 > vary_light.w) + dist2 /= vary_light.w; + if (dist2 > 1.0) { discard; } - vec3 norm = texture2DRect(normalMap, frag).xyz; + vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0; float da = dot(norm, lv); if (da < 0.0) { @@ -46,30 +66,32 @@ void main() lv = normalize(lv); da = dot(norm, lv); - float noise = texture2D(noiseMap, frag/128.0).b; + float noise = texture2D(noiseMap, frag.xy/128.0).b; - vec3 col = texture2DRect(diffuseRect, frag).rgb; + vec3 col = texture2DRect(diffuseRect, frag.xy).rgb; float fa = gl_Color.a+1.0; - float dist_atten = clamp(1.0-(dist2-vary_light.w*(1.0-fa))/(vary_light.w*fa), 0.0, 1.0); + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); float lit = da * dist_atten * noise; col = gl_Color.rgb*lit*col; - vec4 spec = texture2DRect(specularRect, frag); + vec4 spec = texture2DRect(specularRect, frag.xy); if (spec.a > 0.0) { - vec3 ref = reflect(normalize(pos), norm); - float sa = dot(ref,lv); - sa = max(sa, 0.0); - sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0); - sa *= noise; - col += da*sa*gl_Color.rgb*spec.rgb; + float sa = dot(normalize(lv-normalize(pos)),norm); + if (sa > 0.0) + { + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*gl_Color.rgb*spec.rgb; + } } - //attenuate point light contribution by SSAO component - col *= texture2DRect(lightMap, frag.xy).g; - - + if (dot(col, col) <= 0.0) + { + discard; + } + gl_FragColor.rgb = col; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl index a4edb88259..e815ca260f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl @@ -6,7 +6,7 @@ */ varying vec4 vary_light; -varying vec3 vary_fragcoord; +varying vec4 vary_fragcoord; uniform vec2 screen_res; uniform float near_clip; @@ -14,10 +14,10 @@ uniform float near_clip; void main() { //transform vertex - gl_Position = ftransform(); + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; - vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); + vary_fragcoord = pos; vec4 tex = gl_MultiTexCoord0; tex.w = 1.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl new file mode 100644 index 0000000000..71de03663c --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -0,0 +1,57 @@ +/** + * @file postDeferredF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect localLightMap; +uniform sampler2DRect sunLightMap; +uniform sampler2DRect giLightMap; +uniform sampler2D luminanceMap; +uniform sampler2DRect lightMap; + +uniform vec3 lum_quad; +uniform float lum_lod; +uniform vec4 ambient; + +uniform vec3 gi_quad; + +uniform vec2 screen_res; +varying vec2 vary_fragcoord; + +void main() +{ + vec2 tc = vary_fragcoord.xy; + vec3 lum = texture2DLod(luminanceMap, tc/screen_res, lum_lod).rgb; + float luminance = lum.r; + luminance = luminance*lum_quad.y+lum_quad.z; + + vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy); + + float ambocc = texture2DRect(lightMap, vary_fragcoord.xy).g; + + vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; + gi_col = gi_col*gi_col*gi_quad.x + gi_col*gi_quad.y+gi_quad.z*ambocc*ambient.rgb; + gi_col *= diff; + + vec4 sun_col = texture2DRect(sunLightMap, vary_fragcoord.xy); + + vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb; + + + sun_col *= 1.0/min(luminance, 1.0); + gi_col *= 1.0/luminance; + + vec3 col = sun_col.rgb+gi_col+local_col; + + gl_FragColor.rgb = col.rgb; + col.rgb = max(col.rgb-vec3(1.0,1.0,1.0), vec3(0.0, 0.0, 0.0)); + + gl_FragColor.a = 0.0; // max(dot(col.rgb,col.rgb)*lum_quad.x, sun_col.a); + + //gl_FragColor.rgb = vec3(lum_lod); +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl new file mode 100644 index 0000000000..9819232fd5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl @@ -0,0 +1,17 @@ +/** + * @file postDeferredV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl new file mode 100644 index 0000000000..9612aee405 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl @@ -0,0 +1,79 @@ +/** + * @file postgiF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2DRect giLightMap; +uniform sampler2D noiseMap; + +uniform vec2 kern[32]; +uniform float dist_factor; +uniform float blur_size; +uniform vec2 delta; +uniform int kern_length; +uniform float kern_scale; +uniform vec3 blur_quad; + +varying vec2 vary_fragcoord; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; + vec3 pos = getPosition(vary_fragcoord.xy).xyz; + + + vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; + vec2 dlt = kern_scale * delta/(1.0+norm.xy*norm.xy); + dlt /= max(-pos.z*dist_factor, 1.0); + float defined_weight = kern[0].x; + vec3 col = vec3(0.0); + + for (int i = 0; i < kern_length; i++) + { + vec2 tc = vary_fragcoord.xy + kern[i].y*dlt; + vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz*2.0-1.0; + + float d = dot(norm.xyz, sampNorm); + + if (d > 0.8) + { + vec3 samppos = getPosition(tc.xy).xyz; + samppos -= pos; + if (dot(samppos,samppos) < -0.05*pos.z) + { + col += texture2DRect(giLightMap, tc).rgb*kern[i].x; + defined_weight += kern[i].x; + } + } + } + + col /= defined_weight; + + //col = ccol; + + col = col*col*blur_quad.x + col*blur_quad.y + blur_quad.z; + + gl_FragData[0].xyz = col; + + //gl_FragColor = ccol; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl new file mode 100644 index 0000000000..6adcda82a3 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl @@ -0,0 +1,17 @@ +/** + * @file postgiV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl index b3758c3638..b0b31fd4ba 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl @@ -7,8 +7,11 @@ uniform sampler2D diffuseMap; +varying vec4 post_pos; void main() { gl_FragColor = vec4(1,1,1,texture2D(diffuseMap, gl_TexCoord[0].xy).a * gl_Color.a); + + gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl index aae1beeae3..7214d246a4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl @@ -5,13 +5,17 @@ * $License$ */ +varying vec4 post_pos; + void main() { //transform vertex vec4 pos = gl_ModelViewProjectionMatrix*gl_Vertex; - //smash geometry against the near clip plane (great for ortho projections) - pos.z = max(pos.z, -1.0); - gl_Position = pos; + + post_pos = pos; + + gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; gl_FrontColor = gl_Color; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index d5671a6ce4..b4b0d0ce9d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -12,9 +12,9 @@ uniform sampler2DRect specularRect; uniform sampler2DRect positionMap; uniform sampler2DRect normalMap; uniform sampler2DRect depthMap; -uniform sampler2DRect lightMap; uniform sampler2D noiseMap; uniform samplerCube environmentMap; +uniform sampler2D lightFunc; uniform float blur_size; uniform float blur_fidelity; @@ -38,9 +38,9 @@ uniform vec4 max_y; uniform vec4 glow; uniform float scene_light_strength; uniform vec3 env_mat[3]; -uniform mat4 shadow_matrix[3]; -uniform vec4 shadow_clip; -uniform mat3 ssao_effect_mat; +//uniform mat4 shadow_matrix[3]; +//uniform vec4 shadow_clip; +//uniform mat3 ssao_effect_mat; varying vec4 vary_light; varying vec2 vary_fragcoord; @@ -52,6 +52,22 @@ vec3 vary_AmblitColor; vec3 vary_AdditiveColor; vec3 vary_AtmosAttenuation; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition(vec2 pos_screen) +{ //get position in screen space (world units) given window coordinate and depth map + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + vec3 getPositionEye() { return vary_PositionEye; @@ -162,17 +178,7 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) { temp2.x += .25; //increase ambient when there are more clouds - vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; - - /* decrease value and saturation (that in HSV, not HSL) for occluded areas - * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html - * // The following line of code performs the equivalent of: - * float ambAlpha = tmpAmbient.a; - * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis - * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); - * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); - */ - tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); + vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; //haze color setAdditiveColor( @@ -235,36 +241,27 @@ vec3 scaleSoftClip(vec3 light) void main() { vec2 tc = vary_fragcoord.xy; - vec3 pos = texture2DRect(positionMap, tc).xyz; - vec3 norm = texture2DRect(normalMap, tc).xyz; - vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; + vec3 pos = getPosition(tc).xyz; + vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0; + //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; float da = max(dot(norm.xyz, vary_light.xyz), 0.0); - vec4 diffuse = vec4(texture2DRect(diffuseRect, tc).rgb, 1.0); + vec4 diffuse = texture2DRect(diffuseRect, tc); vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); - vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; - float scol = scol_ambocc.r; - float ambocc = scol_ambocc.g; - - calcAtmospherics(pos.xyz, ambocc); + calcAtmospherics(pos.xyz, 0.0); vec3 col = atmosAmbient(vec3(0)); - col += atmosAffectDirectionalLight(min(da, scol)); + col += atmosAffectDirectionalLight(clamp(da, diffuse.a, 1.0)); col *= diffuse.rgb; - if (spec.a > 0.2) + if (spec.a > 0.0) { - vec3 ref = reflect(pos.xyz, norm.xyz); - vec3 rc; - rc.x = dot(ref, env_mat[0]); - rc.y = dot(ref, env_mat[1]); - rc.z = dot(ref, env_mat[2]); - - vec3 refcol = textureCube(environmentMap, rc).rgb; - col.rgb += refcol * spec.rgb; + vec3 ref = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(ref, vary_light.xyz); + col.rgb += vary_SunlitColor*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a; } col = atmosLighting(col); @@ -272,8 +269,4 @@ void main() gl_FragColor.rgb = col; gl_FragColor.a = 0.0; - //gl_FragColor.rg = scol_ambocc.rg; - //gl_FragColor.rgb = norm.rgb*0.5+0.5; - //gl_FragColor.rgb = vec3(ambocc); - //gl_FragColor.rgb = vec3(scol); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl new file mode 100644 index 0000000000..2a7234fd83 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -0,0 +1,177 @@ +/** + * @file spotLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform samplerCube environmentMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + vec3 pos = getPosition(frag.xy).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 > 1.0) + { + discard; + } + + vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z < 0.0) + { + discard; + } + + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex; + } + + float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + //float amb_da = mix(proj_ambiance, proj_ambiance*max(-da, 0.0), max(da, 0.0)); + float amb_da = proj_ambiance; + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec3 stc = (proj_mat * vec4(pfinal.xyz, 1.0)).xyz; + + if (stc.z > 0.0) + { + stc.xy /= stc.z+proj_near; + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb; + } + } + } + } + + /*if (spec.a > 0.0) + { + //vec3 ref = reflect(normalize(pos), norm); + float sa = dot(normalize(lv-normalize(pos)),norm);; + //sa = max(sa, 0.0); + //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0); + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*lcol*spec.rgb; + }*/ + + gl_FragColor.rgb = col; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl index d43fe6ca95..22bdd2c7f3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl @@ -7,17 +7,21 @@ #extension GL_ARB_texture_rectangle : enable -uniform sampler2DRect positionMap; -uniform sampler2DRect normalMap; uniform sampler2DRect depthMap; -uniform sampler2DShadow shadowMap0; -uniform sampler2DShadow shadowMap1; -uniform sampler2DShadow shadowMap2; -uniform sampler2DShadow shadowMap3; +uniform sampler2DRect normalMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DRectShadow shadowMap4; +uniform sampler2DRectShadow shadowMap5; uniform sampler2D noiseMap; +uniform sampler2D lightFunc; + + // Inputs -uniform mat4 shadow_matrix[4]; +uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform float ssao_radius; uniform float ssao_max_radius; @@ -27,6 +31,25 @@ uniform float ssao_factor_inv; varying vec2 vary_fragcoord; varying vec4 vary_light; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +uniform float shadow_bias; +uniform float shadow_offset; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + //calculate decreases in ambient lighting when crowded out (SSAO) float calcAmbientOcclusion(vec4 pos, vec3 norm) { @@ -54,7 +77,7 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm) for (int i = 0; i < 8; i++) { vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect); - vec3 samppos_world = texture2DRect(positionMap, samppos_screen).xyz; + vec3 samppos_world = getPosition(samppos_screen).xyz; vec3 diff = pos_world - samppos_world; float dist2 = dot(diff, diff); @@ -74,14 +97,18 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm) angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0); - return 1.0 - (float(points != 0) * angle_hidden); + return (1.0 - (float(points != 0) * angle_hidden)); } void main() { vec2 pos_screen = vary_fragcoord.xy; - vec4 pos = vec4(texture2DRect(positionMap, pos_screen).xyz, 1.0); - vec3 norm = texture2DRect(normalMap, pos_screen).xyz; + + //try doing an unproject here + + vec4 pos = getPosition(pos_screen); + + vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0; /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL { @@ -90,35 +117,45 @@ void main() }*/ float shadow = 1.0; - float dp_directional_light = max(0.0, dot(norm, vary_light.xyz)); + float dp_directional_light = max(0.0, dot(norm, vary_light.xyz)); + vec4 spos = vec4(pos.xyz + norm.xyz * (-pos.z/64.0*shadow_offset+shadow_bias), 1.0); + + //vec3 debug = vec3(0,0,0); + if (dp_directional_light == 0.0) { // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup shadow = 0.0; } - else if (pos.z > -shadow_clip.w) + else if (spos.z > -shadow_clip.w) { - if (pos.z < -shadow_clip.z) + vec4 lpos; + + if (spos.z < -shadow_clip.z) { - vec4 lpos = shadow_matrix[3]*pos; - shadow = shadow2DProj(shadowMap3, lpos).x; + lpos = shadow_matrix[3]*spos; + lpos.xy *= screen_res; + shadow = shadow2DRectProj(shadowMap3, lpos).x; shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); } - else if (pos.z < -shadow_clip.y) + else if (spos.z < -shadow_clip.y) { - vec4 lpos = shadow_matrix[2]*pos; - shadow = shadow2DProj(shadowMap2, lpos).x; + lpos = shadow_matrix[2]*spos; + lpos.xy *= screen_res; + shadow = shadow2DRectProj(shadowMap2, lpos).x; } - else if (pos.z < -shadow_clip.x) + else if (spos.z < -shadow_clip.x) { - vec4 lpos = shadow_matrix[1]*pos; - shadow = shadow2DProj(shadowMap1, lpos).x; + lpos = shadow_matrix[1]*spos; + lpos.xy *= screen_res; + shadow = shadow2DRectProj(shadowMap1, lpos).x; } else { - vec4 lpos = shadow_matrix[0]*pos; - shadow = shadow2DProj(shadowMap0, lpos).x; + lpos = shadow_matrix[0]*spos; + lpos.xy *= screen_res; + shadow = shadow2DRectProj(shadowMap0, lpos).x; } // take the most-shadowed value out of these two: @@ -126,6 +163,17 @@ void main() // * an unblurred dot product between the sun and this norm // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting shadow = min(shadow, dp_directional_light); + + /*debug.r = lpos.y / (lpos.w*screen_res.y); + + lpos.xy /= lpos.w*32.0; + if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1) + { + debug.gb = vec2(0.5, 0.5); + } + + debug += (1.0-shadow)*0.5;*/ + } else { @@ -135,5 +183,18 @@ void main() gl_FragColor[0] = shadow; gl_FragColor[1] = calcAmbientOcclusion(pos, norm); - //gl_FragColor[2] is unused as of August 2008, may be used for debugging + + //spotlight shadow 1 + vec4 lpos = shadow_matrix[4]*spos; + lpos.xy *= screen_res; + gl_FragColor[2] = shadow2DRectProj(shadowMap4, lpos).x; + + //spotlight shadow 2 + lpos = shadow_matrix[5]*spos; + lpos.xy *= screen_res; + gl_FragColor[3] = shadow2DRectProj(shadowMap5, lpos).x; + + //gl_FragColor.rgb = pos.xyz; + //gl_FragColor.b = shadow; + //gl_FragColor.rgb = debug; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl index 211b2e0397..3cccfb7202 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl @@ -12,7 +12,6 @@ uniform sampler2D detail_3; uniform sampler2D alpha_ramp; varying vec3 vary_normal; -varying vec4 vary_position; void main() { @@ -28,9 +27,8 @@ void main() float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a; vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal ); - gl_FragData[0] = vec4(outColor.rgb, 1.0); + gl_FragData[0] = vec4(outColor.rgb, 0.0); gl_FragData[1] = vec4(outColor.rgb*0.2, 0.2); - gl_FragData[2] = vec4(normalize(vary_normal), 0.0); - gl_FragData[3] = vary_position; + gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl index e9d6dcabff..3038b14772 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl @@ -6,7 +6,6 @@ */ varying vec3 vary_normal; -varying vec4 vary_position; vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1) { @@ -27,7 +26,6 @@ void main() //transform vertex gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - vary_position = gl_ModelViewMatrix * gl_Vertex; vary_normal = normalize(gl_NormalMatrix * gl_Normal); // Transform and pass tex coords diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl index bc2c9816dc..258acee08c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl @@ -8,13 +8,11 @@ uniform sampler2D diffuseMap; varying vec3 vary_normal; -varying vec4 vary_position; void main() { vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy); - gl_FragData[0] = gl_Color*col; + gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005); gl_FragData[1] = vec4(0,0,0,0); - gl_FragData[2] = vec4(normalize(vary_normal), 0.0); - gl_FragData[3] = vary_position; + gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl index 9131d7c2b3..6b9dc2defb 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl @@ -6,7 +6,6 @@ */ varying vec3 vary_normal; -varying vec4 vary_position; void main() { @@ -14,8 +13,6 @@ void main() gl_Position = ftransform(); gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vary_position = gl_ModelViewMatrix * gl_Vertex; - vary_normal = normalize(gl_NormalMatrix * gl_Normal); gl_FrontColor = gl_Color; diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index 0a1f019e3d..d21575119d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -5,19 +5,21 @@ * $License$ */ +#extension GL_ARB_texture_rectangle : enable + vec3 scaleSoftClip(vec3 inColor); vec3 atmosTransport(vec3 inColor); uniform sampler2D bumpMap; uniform sampler2D screenTex; uniform sampler2D refTex; -uniform sampler2DShadow shadowMap0; -uniform sampler2DShadow shadowMap1; -uniform sampler2DShadow shadowMap2; -uniform sampler2DShadow shadowMap3; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; uniform sampler2D noiseMap; -uniform mat4 shadow_matrix[4]; +uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform float sunAngle; @@ -32,7 +34,8 @@ uniform vec3 normScale; uniform float fresnelScale; uniform float fresnelOffset; uniform float blurMultiplier; - +uniform vec2 screen_res; +uniform mat4 norm_mat; //region space to screen space //bigWave is (refCoord.w, view.w); varying vec4 refCoord; @@ -88,7 +91,7 @@ void main() refcol *= df1 * 0.333; vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5; - wavef.z *= max(-viewVec.z, 0.1); + //wavef.z *= max(-viewVec.z, 0.1); wavef = normalize(wavef); float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset; @@ -101,10 +104,10 @@ void main() refcol = mix(baseCol*df2, refcol, dweight); //get specular component - float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0); + //float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0); //harden specular - spec = pow(spec, 128.0); + //spec = pow(spec, 128.0); //figure out distortion vector (ripply) vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0); @@ -118,40 +121,21 @@ void main() float shadow = 1.0; vec4 pos = vary_position; - vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz; - - if (pos.z > -shadow_clip.w) - { - vec4 spos = pos; - - if (pos.z < -shadow_clip.z) - { - vec4 lpos = (shadow_matrix[3]*spos); - shadow = shadow2DProj(shadowMap3, lpos).x; - } - else if (pos.z < -shadow_clip.y) - { - vec4 lpos = (shadow_matrix[2]*spos); - shadow = shadow2DProj(shadowMap2, lpos).x; - } - else if (pos.z < -shadow_clip.x) - { - vec4 lpos = (shadow_matrix[1]*spos); - shadow = shadow2DProj(shadowMap1, lpos).x; - } - else - { - vec4 lpos = (shadow_matrix[0]*spos); - shadow = shadow2DProj(shadowMap0, lpos).x; - } - } - - spec *= shadow; - color.rgb += spec * specular; - - color.rgb = atmosTransport(color.rgb); - color.rgb = scaleSoftClip(color.rgb); - color.a = spec * sunAngle2; + //vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz; + vec4 spos = pos; + + //spec *= shadow; + //color.rgb += spec * specular; + + //color.rgb = atmosTransport(color.rgb); + //color.rgb = scaleSoftClip(color.rgb); + //color.a = spec * sunAngle2; - gl_FragColor = color; + //wavef.z = -0.25f; + wavef = normalize(wavef); + wavef = (norm_mat*vec4(wavef, 1.0)).xyz; + + gl_FragData[0] = vec4(color.rgb, 0.75); + gl_FragData[1] = vec4(1,1,1, 0.8); + gl_FragData[2] = vec4(wavef*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl new file mode 100644 index 0000000000..ad16de6d81 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -0,0 +1,132 @@ +/** + * @file alphaF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2D diffuseMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2D noiseMap; +uniform sampler2DRect depthMap; + +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform vec2 screen_res; +uniform vec2 shadow_res; + +vec3 atmosLighting(vec3 light); +vec3 scaleSoftClip(vec3 light); + +varying vec3 vary_ambient; +varying vec3 vary_directional; +varying vec3 vary_fragcoord; +varying vec3 vary_position; +varying vec3 vary_light; + +uniform float alpha_soften; + +uniform float shadow_bias; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos.xyz /= pos.w; + pos.w = 1.0; + return pos; +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs); + + return shadow/5.0; +} + + +void main() +{ + vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; + frag *= screen_res; + + vec3 samp_pos = getPosition(frag).xyz; + + float shadow = 1.0; + vec4 pos = vec4(vary_position, 1.0); + + vec4 spos = pos; + + if (spos.z > -shadow_clip.w) + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 1.5); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 1.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 1.5); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.5); + } + } + + vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a); + vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col; + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + + if (samp_pos.z != 0.0 && gl_Color.a < 1.0) + { + float dist_factor = alpha_soften; + float a = gl_Color.a; + a *= a; + dist_factor *= 1.0/(1.0-a); + color.a *= min((pos.z-samp_pos.z)*dist_factor, 1.0); + } + + //gl_FragColor = gl_Color; + gl_FragColor = color; + //gl_FragColor = vec4(1,0,1,1)*shadow; + +} + diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl new file mode 100644 index 0000000000..5991e1f3b5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -0,0 +1,76 @@ +/** + * @file alphaV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); +void calcAtmospherics(vec3 inPositionEye); + +float calcDirectionalLight(vec3 n, vec3 l); +float calcPointLight(vec3 v, vec3 n, vec4 lp, float la); + +vec3 atmosAmbient(vec3 light); +vec3 atmosAffectDirectionalLight(float lightIntensity); +vec3 scaleDownLight(vec3 light); +vec3 scaleUpLight(vec3 light); + +varying vec3 vary_ambient; +varying vec3 vary_directional; +varying vec3 vary_fragcoord; +varying vec3 vary_position; +varying vec3 vary_light; + +uniform float near_clip; +uniform float shadow_offset; +uniform float shadow_bias; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + + vec4 pos = (gl_ModelViewMatrix * gl_Vertex); + vec3 norm = normalize(gl_NormalMatrix * gl_Normal); + + float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz)); + vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset; + + calcAtmospherics(pos.xyz); + + //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); + vec4 col; + col.a = gl_Color.a; + + // Add windlight lights + col.rgb = atmosAmbient(vec3(0.)); + col.rgb = scaleUpLight(col.rgb); + + // Collect normal lights (need to be divided by two, as we later multiply by 2) + col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation); + col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation); + col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation); + col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation); + col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation); + col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation); + col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz); + col.rgb = scaleDownLight(col.rgb); + + vary_light = gl_LightSource[0].position.xyz; + + vary_ambient = col.rgb*gl_Color.rgb; + vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); + + col.rgb = min(col.rgb*gl_Color.rgb, 1.0); + + gl_FrontColor = col; + + gl_FogFragCoord = pos.z; + + pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); + +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaF.glsl new file mode 100644 index 0000000000..a81e4caf4c --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaF.glsl @@ -0,0 +1,98 @@ +/** + * @file avatarAlphaF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2D diffuseMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2D noiseMap; + +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform vec2 screen_res; +uniform vec2 shadow_res; + +vec3 atmosLighting(vec3 light); +vec3 scaleSoftClip(vec3 light); + +varying vec3 vary_ambient; +varying vec3 vary_directional; +varying vec3 vary_position; +varying vec3 vary_normal; + +uniform float shadow_bias; + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs); + + return shadow/5.0; +} + +void main() +{ + float shadow = 1.0; + vec4 pos = vec4(vary_position, 1.0); + vec3 norm = normalize(vary_normal); + + //vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz; + + vec4 spos = pos; + + if (spos.z > -shadow_clip.w) + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 1.5); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 1.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 1.5); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.5); + } + } + + + vec4 col = vec4(vary_ambient + vary_directional*shadow, gl_Color.a); + vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col; + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + + gl_FragColor = color; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl new file mode 100644 index 0000000000..a939499b17 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -0,0 +1,84 @@ +/** + * @file avatarAlphaV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); +mat4 getSkinnedTransform(); +void calcAtmospherics(vec3 inPositionEye); + +float calcDirectionalLight(vec3 n, vec3 l); +float calcPointLight(vec3 v, vec3 n, vec4 lp, float la); + +vec3 atmosAmbient(vec3 light); +vec3 atmosAffectDirectionalLight(float lightIntensity); +vec3 scaleDownLight(vec3 light); +vec3 scaleUpLight(vec3 light); + +varying vec3 vary_position; +varying vec3 vary_ambient; +varying vec3 vary_directional; +varying vec3 vary_normal; + +uniform float near_clip; +uniform float shadow_offset; +uniform float shadow_bias; + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + + vec4 pos; + vec3 norm; + + mat4 trans = getSkinnedTransform(); + pos.x = dot(trans[0], gl_Vertex); + pos.y = dot(trans[1], gl_Vertex); + pos.z = dot(trans[2], gl_Vertex); + pos.w = 1.0; + + norm.x = dot(trans[0].xyz, gl_Normal); + norm.y = dot(trans[1].xyz, gl_Normal); + norm.z = dot(trans[2].xyz, gl_Normal); + norm = normalize(norm); + + gl_Position = gl_ProjectionMatrix * pos; + + float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz)); + vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset; + vary_normal = norm; + + calcAtmospherics(pos.xyz); + + //vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); + vec4 col; + col.a = gl_Color.a; + + // Add windlight lights + col.rgb = atmosAmbient(vec3(0.)); + col.rgb = scaleUpLight(col.rgb); + + // Collect normal lights (need to be divided by two, as we later multiply by 2) + col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation); + col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation); + col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation); + col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].linearAttenuation); + col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].linearAttenuation); + col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].linearAttenuation); + col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz); + col.rgb = scaleDownLight(col.rgb); + + vary_ambient = col.rgb*gl_Color.rgb; + vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); + + col.rgb = min(col.rgb*gl_Color.rgb, 1.0); + + gl_FrontColor = col; + + gl_FogFragCoord = pos.z; + +} + + diff --git a/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl new file mode 100644 index 0000000000..0fad5b4b50 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/blurLightF.glsl @@ -0,0 +1,80 @@ +/** + * @file blurLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2DRect lightMap; + +uniform float dist_factor; +uniform float blur_size; +uniform vec2 delta; +uniform vec3 kern[4]; +uniform float kern_scale; + +varying vec2 vary_fragcoord; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; + vec3 pos = getPosition(vary_fragcoord.xy).xyz; + vec4 ccol = texture2DRect(lightMap, vary_fragcoord.xy).rgba; + + vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy); + + dlt /= max(-pos.z*dist_factor, 1.0); + + vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free' + vec4 col = defined_weight.xyxx * ccol; + + for (int i = 1; i < 4; i++) + { + vec2 tc = vary_fragcoord.xy + kern[i].z*dlt; + vec3 samppos = getPosition(tc).xyz; + float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane + if (d*d <= 0.003) + { + col += texture2DRect(lightMap, tc)*kern[i].xyxx; + defined_weight += kern[i].xy; + } + } + for (int i = 1; i < 4; i++) + { + vec2 tc = vary_fragcoord.xy - kern[i].z*dlt; + vec3 samppos = getPosition(tc).xyz; + float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane + if (d*d <= 0.003) + { + col += texture2DRect(lightMap, tc)*kern[i].xyxx; + defined_weight += kern[i].xy; + } + } + + + + col /= defined_weight.xyxx; + + gl_FragColor = col; +} + diff --git a/indra/newview/app_settings/shaders/class2/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/blurLightV.glsl new file mode 100644 index 0000000000..b7f07e5702 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/blurLightV.glsl @@ -0,0 +1,17 @@ +/** + * @file blurLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl new file mode 100644 index 0000000000..02beddd43b --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl @@ -0,0 +1,58 @@ +/** + * @file edgeF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; + +uniform float gi_dist_cutoff; + +varying vec2 vary_fragcoord; + +uniform float depth_cutoff; +uniform float norm_cutoff; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +float getDepth(vec2 pos_screen) +{ + float z = texture2DRect(depthMap, pos_screen.xy).a; + z = z*2.0-1.0; + vec4 ndc = vec4(0.0, 0.0, z, 1.0); + vec4 p = inv_proj*ndc; + return p.z/p.w; +} + +void main() +{ + vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; + float depth = getDepth(vary_fragcoord.xy); + + vec2 tc = vary_fragcoord.xy; + + float sc = 0.75; + + vec2 de; + de.x = (depth-getDepth(tc+vec2(sc, sc))) + (depth-getDepth(tc+vec2(-sc, -sc))); + de.y = (depth-getDepth(tc+vec2(-sc, sc))) + (depth-getDepth(tc+vec2(sc, -sc))); + de /= depth; + de *= de; + de = step(depth_cutoff, de); + + vec2 ne; + ne.x = dot(texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb*2.0-1.0, norm); + ne.y = dot(texture2DRect(normalMap, tc+vec2(sc,sc)).rgb*2.0-1.0, norm); + + ne = 1.0-ne; + + ne = step(norm_cutoff, ne); + + gl_FragColor.a = dot(de,de)+dot(ne,ne); + //gl_FragColor.a = dot(de,de); +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl new file mode 100644 index 0000000000..f1938c92b8 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl @@ -0,0 +1,17 @@ +/** + * @file edgeV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl new file mode 100644 index 0000000000..651959413c --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -0,0 +1,188 @@ +/** + * @file multiSpotLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform samplerCube environmentMap; +uniform sampler2DRect lightMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambient_lod; +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + vec3 pos = getPosition(frag.xy).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 > 1.0) + { + discard; + } + + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texture2DRect(lightMap, frag.xy); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + + vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z < 0.0) + { + discard; + } + + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0); + if (dist_atten <= 0.0) + { + discard; + } + + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + float amb_da = proj_ambiance; + + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex*shadow; + amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; + } + + //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, proj_ambient_lod); + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + + if (stc.z > 0.0) + { + stc.xy /= stc.w; + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow; + } + } + } + } + + //attenuate point light contribution by SSAO component + col *= texture2DRect(lightMap, frag.xy).g; + + gl_FragColor.rgb = col; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class2/deferred/postDeferredF.glsl new file mode 100644 index 0000000000..ee0e9d6367 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/postDeferredF.glsl @@ -0,0 +1,59 @@ +/** + * @file postDeferredF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect localLightMap; +uniform sampler2DRect sunLightMap; +uniform sampler2DRect giLightMap; +uniform sampler2D luminanceMap; +uniform sampler2DRect lightMap; + +uniform vec3 gi_lum_quad; +uniform vec3 sun_lum_quad; +uniform vec3 lum_quad; +uniform float lum_lod; +uniform vec4 ambient; + +uniform vec3 gi_quad; + +uniform vec2 screen_res; +varying vec2 vary_fragcoord; + +void main() +{ + vec2 tc = vary_fragcoord.xy; + vec3 lcol = texture2DLod(luminanceMap, tc/screen_res, lum_lod).rgb; + + float lum = sqrt(lcol.r)*lum_quad.x+lcol.r*lcol.r*lum_quad.y+lcol.r*lum_quad.z; + + vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy); + + float ambocc = texture2DRect(lightMap, vary_fragcoord.xy).g; + + vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; + gi_col = gi_col*gi_col*gi_quad.x + gi_col*gi_quad.y+gi_quad.z*ambocc*ambient.rgb; + gi_col *= diff; + + vec4 sun_col = texture2DRect(sunLightMap, vary_fragcoord.xy); + + vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb; + + + float sun_lum = 1.0-lum; + sun_lum = sun_lum*sun_lum*sun_lum_quad.x + sun_lum*sun_lum_quad.y+sun_lum_quad.z; + + float gi_lum = lum; + gi_lum = gi_lum*gi_lum*gi_lum_quad.x+gi_lum*gi_lum_quad.y+gi_lum_quad.z; + gi_col *= 1.0/gi_lum; + + vec3 col = sun_col.rgb*(1.0+max(sun_lum,0.0))+gi_col+local_col; + + gl_FragColor.rgb = col.rgb; + gl_FragColor.a = max(sun_lum*min(sun_col.r+sun_col.g+sun_col.b, 1.0), sun_col.a); + + //gl_FragColor.rgb = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class2/deferred/postDeferredV.glsl new file mode 100644 index 0000000000..9819232fd5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/postDeferredV.glsl @@ -0,0 +1,17 @@ +/** + * @file postDeferredV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl new file mode 100644 index 0000000000..531f7376a3 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -0,0 +1,294 @@ +/** + * @file softenLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect normalMap; +uniform sampler2DRect lightMap; +uniform sampler2D noiseMap; +uniform samplerCube environmentMap; +uniform sampler2D lightFunc; +uniform vec3 gi_quad; + +uniform float blur_size; +uniform float blur_fidelity; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +//uniform vec4 camPosWorld; +uniform vec4 gamma; +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 distance_multiplier; +uniform vec4 max_y; +uniform vec4 glow; +uniform float scene_light_strength; +uniform vec3 env_mat[3]; +uniform vec4 shadow_clip; +uniform mat3 ssao_effect_mat; + +uniform sampler2DRect depthMap; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; + +vec3 vary_PositionEye; + +vec3 vary_SunlitColor; +vec3 vary_AmblitColor; +vec3 vary_AdditiveColor; +vec3 vary_AtmosAttenuation; + +vec4 getPosition(vec2 pos_screen) +{ //get position in screen space (world units) given window coordinate and depth map + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 getPositionEye() +{ + return vary_PositionEye; +} +vec3 getSunlitColor() +{ + return vary_SunlitColor; +} +vec3 getAmblitColor() +{ + return vary_AmblitColor; +} +vec3 getAdditiveColor() +{ + return vary_AdditiveColor; +} +vec3 getAtmosAttenuation() +{ + return vary_AtmosAttenuation; +} + + +void setPositionEye(vec3 v) +{ + vary_PositionEye = v; +} + +void setSunlitColor(vec3 v) +{ + vary_SunlitColor = v; +} + +void setAmblitColor(vec3 v) +{ + vary_AmblitColor = v; +} + +void setAdditiveColor(vec3 v) +{ + vary_AdditiveColor = v; +} + +void setAtmosAttenuation(vec3 v) +{ + vary_AtmosAttenuation = v; +} + +void calcAtmospherics(vec3 inPositionEye, float ambFactor) { + + vec3 P = inPositionEye; + setPositionEye(P); + + //(TERRAIN) limit altitude + if (P.y > max_y.x) P *= (max_y.x / P.y); + if (P.y < -max_y.x) P *= (-max_y.x / P.y); + + vec3 tmpLightnorm = lightnorm.xyz; + + vec3 Pn = normalize(P); + float Plen = length(P); + + vec4 temp1 = vec4(0); + vec3 temp2 = vec3(0); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + //sunlight attenuation effect (hue and brightness) due to atmosphere + //this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); + //I had thought blue_density and haze_density should have equal weighting, + //but attenuation due to haze_density tends to seem too strong + + temp1 = blue_density + vec4(haze_density.r); + blue_weight = blue_density / temp1; + haze_weight = vec4(haze_density.r) / temp1; + + //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain) + temp2.y = max(0.0, tmpLightnorm.y); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // main atmospheric scattering line integral + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); + + //final atmosphere attenuation factor + setAtmosAttenuation(temp1.rgb); + + //compute haze glow + //(can use temp2.x as temp because we haven't used it yet) + temp2.x = dot(Pn, tmpLightnorm.xyz); + temp2.x = 1. - temp2.x; + //temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .03); //was glow.y + //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot) + temp2.x *= glow.x; + //higher glow.x gives dimmer glow (because next step is 1 / "angle") + temp2.x = pow(temp2.x, glow.z); + //glow.z should be negative, so we're doing a sort of (1 / "angle") function + + //add "minimum anti-solar illumination" + temp2.x += .25; + + //increase ambient when there are more clouds + vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; + + /* decrease value and saturation (that in HSV, not HSL) for occluded areas + * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html + * // The following line of code performs the equivalent of: + * float ambAlpha = tmpAmbient.a; + * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis + * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); + * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); + */ + tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); + + //haze color + setAdditiveColor( + vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x + + tmpAmbient))); + + //brightness of surface both sunlight and ambient + setSunlitColor(vec3(sunlight * .5)); + setAmblitColor(vec3(tmpAmbient * .25)); + setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); +} + +vec3 atmosLighting(vec3 light) +{ + light *= getAtmosAttenuation().r; + light += getAdditiveColor(); + return (2.0 * light); +} + +vec3 atmosTransport(vec3 light) { + light *= getAtmosAttenuation().r; + light += getAdditiveColor() * 2.0; + return light; +} +vec3 atmosGetDiffuseSunlightColor() +{ + return getSunlitColor(); +} + +vec3 scaleDownLight(vec3 light) +{ + return (light / scene_light_strength ); +} + +vec3 scaleUpLight(vec3 light) +{ + return (light * scene_light_strength); +} + +vec3 atmosAmbient(vec3 light) +{ + return getAmblitColor() + light / 2.0; +} + +vec3 atmosAffectDirectionalLight(float lightIntensity) +{ + return getSunlitColor() * lightIntensity; +} + +vec3 scaleSoftClip(vec3 light) +{ + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +void main() +{ + vec2 tc = vary_fragcoord.xy; + vec3 pos = getPosition(tc).xyz; + vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0; + //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; + + float da = max(dot(norm.xyz, vary_light.xyz), 0.0); + + vec4 diffuse = texture2DRect(diffuseRect, tc); + vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); + + vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; + float scol = max(scol_ambocc.r, diffuse.a); + float ambocc = scol_ambocc.g; + + calcAtmospherics(pos.xyz, ambocc); + + vec3 col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + + col *= diffuse.rgb; + + if (spec.a > 0.0) + { + vec3 ref = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(ref, vary_light.xyz); + col.rgb += vary_SunlitColor*scol*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + + gl_FragColor.rgb = col; + + //gl_FragColor.rgb = gi_col.rgb; + gl_FragColor.a = 0.0; + + //gl_FragColor.rg = scol_ambocc.rg; + //gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb; + //gl_FragColor.rgb = norm.rgb*0.5+0.5; + //gl_FragColor.rgb = vec3(ambocc); + //gl_FragColor.rgb = vec3(scol); +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl new file mode 100644 index 0000000000..ad8af4780d --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl @@ -0,0 +1,24 @@ +/** + * @file softenLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform vec2 screen_res; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; +void main() +{ + //transform vertex + gl_Position = ftransform(); + + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; + + vec4 tex = gl_MultiTexCoord0; + tex.w = 1.0; + + vary_light = gl_MultiTexCoord0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl new file mode 100644 index 0000000000..d6534083cf --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -0,0 +1,199 @@ +/** + * @file spotLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform samplerCube environmentMap; +uniform sampler2DRect lightMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texture2DRect(lightMap, frag.xy); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + + vec3 pos = getPosition(frag.xy).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 > 1.0) + { + discard; + } + + vec3 norm = texture2DRect(normalMap, frag.xy).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z < 0.0) + { + discard; + } + + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex*shadow; + } + + float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + vec4 amb_plcol = texture2DLod(projectionMap, proj_tc.xy, lod); + //float amb_da = mix(proj_ambiance, proj_ambiance*max(-da, 0.0), max(da, 0.0)); + float amb_da = proj_ambiance; + if (da > 0.0) + { + amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; + } + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec3 stc = (proj_mat * vec4(pfinal.xyz, 1.0)).xyz; + + if (stc.z > 0.0) + { + stc.xy /= stc.z+proj_near; + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow; + } + } + } + } + + /*if (spec.a > 0.0) + { + //vec3 ref = reflect(normalize(pos), norm); + float sa = dot(normalize(lv-normalize(pos)),norm);; + //sa = max(sa, 0.0); + //sa = pow(sa, 128.0 * spec.a*spec.a/dist_atten)*min(dist_atten*4.0, 1.0); + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*lcol*spec.rgb; + }*/ + + //attenuate point light contribution by SSAO component + col *= texture2DRect(lightMap, frag.xy).g; + + + gl_FragColor.rgb = col; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl new file mode 100644 index 0000000000..a0026edcd2 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -0,0 +1,235 @@ +/** + * @file sunLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap4; +uniform sampler2DShadow shadowMap5; +uniform sampler2D noiseMap; + +uniform sampler2D lightFunc; + + +// Inputs +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform float ssao_radius; +uniform float ssao_max_radius; +uniform float ssao_factor; +uniform float ssao_factor_inv; + +varying vec2 vary_fragcoord; +varying vec4 vary_light; + +uniform mat4 inv_proj; +uniform vec2 screen_res; +uniform vec2 shadow_res; +uniform vec2 proj_shadow_res; + +uniform float shadow_bias; +uniform float shadow_offset; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +//calculate decreases in ambient lighting when crowded out (SSAO) +float calcAmbientOcclusion(vec4 pos, vec3 norm) +{ + vec2 kern[8]; + // exponentially (^2) distant occlusion samples spread around origin + kern[0] = vec2(-1.0, 0.0) * 0.125*0.125; + kern[1] = vec2(1.0, 0.0) * 0.250*0.250; + kern[2] = vec2(0.0, 1.0) * 0.375*0.375; + kern[3] = vec2(0.0, -1.0) * 0.500*0.500; + kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625; + kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750; + kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875; + kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000; + + vec2 pos_screen = vary_fragcoord.xy; + vec3 pos_world = pos.xyz; + vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy; + + float angle_hidden = 0.0; + int points = 0; + + float scale = min(ssao_radius / -pos_world.z, ssao_max_radius); + + // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?) + for (int i = 0; i < 8; i++) + { + vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect); + vec3 samppos_world = getPosition(samppos_screen).xyz; + + vec3 diff = pos_world - samppos_world; + float dist2 = dot(diff, diff); + + // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area + // --> solid angle shrinking by the square of distance + //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2 + //(k should vary inversely with # of samples, but this is taken care of later) + + //if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) // -0.05*norm to shift sample point back slightly for flat surfaces + // angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional. max of 1.0 (= ssao_factor_inv * ssao_factor) + angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv); + + // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" + points = points + int(diff.z > -1.0); + } + + angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0); + + return (1.0 - (float(points != 0) * angle_hidden)); +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias*scl; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs); + + return shadow/5.0; + + //return shadow; +} + +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias*scl; + + float cs = shadow2D(shadowMap, stc.xyz).x; + float shadow = cs; + + vec2 off = 1.5/proj_shadow_res; + + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs); + + + return shadow/5.0; + + //return shadow; +} + +void main() +{ + vec2 pos_screen = vary_fragcoord.xy; + + //try doing an unproject here + + vec4 pos = getPosition(pos_screen); + + vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0; + + /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL + { + gl_FragColor = vec4(0.0); // doesn't matter + return; + }*/ + + float shadow = 1.0; + float dp_directional_light = max(0.0, dot(norm, vary_light.xyz)); + + vec4 spos = vec4(pos.xyz + vary_light.xyz * (1.0-dp_directional_light)*shadow_offset, 1.0); + + if (spos.z > -shadow_clip.w) + { + if (dp_directional_light == 0.0) + { + // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup + shadow = 0.0; + } + else + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 0.25); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 0.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 0.75); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.0); + } + + // take the most-shadowed value out of these two: + // * the blurred sun shadow in the light (shadow) map + // * an unblurred dot product between the sun and this norm + // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting + shadow = min(shadow, dp_directional_light); + + //lpos.xy /= lpos.w*32.0; + //if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1) + //{ + // shadow = 0.0; + //} + + } + } + else + { + // more distant than the shadow map covers + shadow = 1.0; + } + + gl_FragColor[0] = shadow; + gl_FragColor[1] = calcAmbientOcclusion(pos, norm); + + //spotlight shadow 1 + vec4 lpos = shadow_matrix[4]*spos; + gl_FragColor[2] = pcfShadow(shadowMap4, lpos, 0.1).x; + + //spotlight shadow 2 + lpos = shadow_matrix[5]*spos; + gl_FragColor[3] = pcfShadow(shadowMap5, lpos, 0.1).x; + + //gl_FragColor.rgb = pos.xyz; + //gl_FragColor.b = shadow; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl new file mode 100644 index 0000000000..5081485c4b --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl @@ -0,0 +1,25 @@ +/** + * @file sunLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec4 vary_light; +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res; + vec4 tex = gl_MultiTexCoord0; + tex.w = 1.0; + + vary_light = gl_MultiTexCoord0; + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl new file mode 100644 index 0000000000..7325825d6d --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl @@ -0,0 +1,84 @@ +/** + * @file giDownsampleF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform sampler2DRect giLightMap; + +uniform vec2 kern[32]; +uniform float dist_factor; +uniform float blur_size; +uniform vec2 delta; +uniform int kern_length; +uniform float kern_scale; +uniform vec3 blur_quad; + +varying vec2 vary_fragcoord; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +float getDepth(vec2 pos_screen) +{ + float z = texture2DRect(depthMap, pos_screen.xy).a; + z = z*2.0-1.0; + vec4 ndc = vec4(0.0, 0.0, z, 1.0); + vec4 p = inv_proj*ndc; + return p.z/p.w; +} + +void main() +{ + vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz*2.0-1.0; + float depth = getDepth(vary_fragcoord.xy); + + vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; + vec2 dlt = kern_scale * delta/(vec2(1.0,1.0)+norm.xy*norm.xy); + dlt /= clamp(-depth*blur_quad.x, 1.0, 3.0); + float defined_weight = kern[0].x; + vec3 col = ccol*kern[0].x; + + for (int i = 0; i < kern_length; i++) + { + vec2 tc = vary_fragcoord.xy + kern[i].y*dlt; + vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz*2.0-1.0; + + float d = dot(norm.xyz, sampNorm); + + if (d > 0.5) + { + float sampdepth = getDepth(tc.xy); + sampdepth -= depth; + if (sampdepth*sampdepth < blur_quad.z) + { + col += texture2DRect(giLightMap, tc).rgb*kern[i].x; + defined_weight += kern[i].x; + } + } + } + + col /= defined_weight; + + //col = ccol; + + col = col*blur_quad.y; + + gl_FragData[0].xyz = col; + + //gl_FragColor = ccol; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl new file mode 100644 index 0000000000..6adcda82a3 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl @@ -0,0 +1,17 @@ +/** + * @file postgiV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl new file mode 100644 index 0000000000..939710cb56 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl @@ -0,0 +1,190 @@ +/** + * @file giF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2DRect lightMap; +uniform sampler2DRect specularRect; + +uniform sampler2D noiseMap; + +uniform sampler2D diffuseGIMap; +uniform sampler2D specularGIMap; +uniform sampler2D normalGIMap; +uniform sampler2D depthGIMap; + +uniform sampler2D lightFunc; + +// Inputs +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +uniform vec4 sunlight_color; + +uniform mat4 inv_proj; +uniform mat4 gi_mat; //gPipeline.mGIMatrix - eye space to sun space +uniform mat4 gi_mat_proj; //gPipeline.mGIMatrixProj - eye space to projected sun space +uniform mat4 gi_norm_mat; //gPipeline.mGINormalMatrix - eye space normal to sun space normal matrix +uniform mat4 gi_inv_proj; //gPipeline.mGIInvProj - projected sun space to sun space +uniform float gi_sample_width; +uniform float gi_noise; +uniform float gi_attenuation; +uniform float gi_range; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec4 getGIPosition(vec2 gi_tc) +{ + float depth = texture2D(depthGIMap, gi_tc).a; + vec2 sc = gi_tc*2.0; + sc -= vec2(1.0, 1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = gi_inv_proj*ndc; + pos.xyz /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 giAmbient(vec3 pos, vec3 norm) +{ + vec4 gi_c = gi_mat_proj * vec4(pos, 1.0); + gi_c.xyz /= gi_c.w; + + vec4 gi_pos = gi_mat*vec4(pos,1.0); + vec3 gi_norm = (gi_norm_mat*vec4(norm,1.0)).xyz; + gi_norm = normalize(gi_norm); + + vec4 c_spec = texture2DRect(specularRect, vary_fragcoord.xy); + vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).rgb; + gi_pos.xyz += nz.x*gi_noise*gi_norm.xyz; + vec2 tcx = gi_norm.xy; + vec2 tcy = gi_norm.yx; + + vec4 eye_pos = gi_mat*vec4(0,0,0,1.0); + + vec3 eye_dir = normalize(gi_pos.xyz-eye_pos.xyz); + vec3 eye_ref = reflect(eye_dir, gi_norm); + + float da = 0.0; //texture2DRect(lightMap, vary_fragcoord.xy).r*0.5; + vec3 fdiff = vec3(da); + float fda = da; + + vec3 rcol = vec3(0,0,0); + + float fsa = 0.0; + + + for (int i = -1; i <= 1; i += 2 ) + { + for (int j = -1; j <= 1; j+= 2) + { + vec2 tc = vec2(i, j)*0.75+gi_norm.xy*nz.z; + tc += nz.xy*2.0; + tc *= gi_sample_width*0.25; + tc += gi_c.xy; + + vec3 lnorm = -(texture2D(normalGIMap, tc.xy).xyz*2.0-1.0); + vec3 lpos = getGIPosition(tc.xy).xyz; + + vec3 at = lpos-gi_pos.xyz; + float dist = length(at); + float dist_atten = clamp(1.0/(gi_attenuation*dist), 0.0, 1.0); + + + if (dist_atten > 0.01) + { //possible contribution of indirect light to this surface + vec3 ldir = at; + + float ld = -dot(ldir, lnorm); + + if (ld < 0.0) + { + float ang_atten = dot(ldir, gi_norm); + + if (ang_atten > 0.0) + { + vec4 spec = texture2D(specularGIMap, tc.xy); + at = normalize(at); + vec3 diff; + + float da = 0.0; + + //contribution from indirect source to visible pixel + vec3 ha = at; + ha.z -= 1.0; + ha = normalize(ha); + if (spec.a > 0.0) + { + float sa = dot(ha,lnorm); + da = texture2D(lightFunc, vec2(sa, spec.a)).a; + } + else + { + da = -lnorm.z; + } + + diff = texture2D(diffuseGIMap, tc.xy).rgb+spec.rgb*spec.a*2.0; + + if (da > 0.0) + { //contribution from visible pixel to eye + vec3 ha = normalize(at-eye_dir); + if (c_spec.a > 0.0) + { + float sa = dot(ha, gi_norm); + da = dist_atten*texture2D(lightFunc, vec2(sa, c_spec.a)).a; + } + else + { + da = dist_atten*dot(gi_norm, normalize(ldir)); + } + fda += da; + fdiff += da*(c_spec.rgb*c_spec.a*2.0+vec3(1,1,1))*diff.rgb; + } + } + } + } + } + } + + fdiff *= sunlight_color.rgb; + + vec3 ret = fda*fdiff; + + return clamp(ret,vec3(0.0), vec3(1.0)); +} + +void main() +{ + vec2 pos_screen = vary_fragcoord.xy; + vec4 pos = getPosition(pos_screen); + + float rad = gi_range*0.5; + + vec3 norm = texture2DRect(normalMap, pos_screen).xyz*2.0-1.0; + float dist = max(length(pos.xyz)-rad, 0.0); + + float da = clamp(1.0-dist/rad, 0.0, 1.0); + + vec3 ambient = da > 0.0 ? giAmbient(pos.xyz, norm) : vec3(0); + + + gl_FragData[0].xyz = mix(vec3(0), ambient, da); +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl new file mode 100644 index 0000000000..e0eeebf8b6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl @@ -0,0 +1,25 @@ +/** + * @file giFinalF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2D bloomMap; +uniform sampler2DRect edgeMap; + +uniform vec2 screen_res; +varying vec2 vary_fragcoord; + + +void main() +{ + vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res); + vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy); + + gl_FragColor = bloom + diff; + //gl_FragColor.rgb = vec3(texture2DRect(edgeMap, vary_fragcoord.xy).a); +}
\ No newline at end of file diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl new file mode 100644 index 0000000000..41a29c31bd --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl @@ -0,0 +1,17 @@ +/** + * @file giFinalV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl new file mode 100644 index 0000000000..71dcea9628 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl @@ -0,0 +1,22 @@ +/** + * @file giV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res; + vec4 tex = gl_MultiTexCoord0; + tex.w = 1.0; + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl new file mode 100644 index 0000000000..406a7e07cf --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl @@ -0,0 +1,19 @@ +/** + * @file luminanceF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect lightMap; +uniform sampler2DRect diffuseRect; + +varying vec2 vary_fragcoord; +void main() +{ + float i = texture2DRect(lightMap, vary_fragcoord.xy).r; + gl_FragColor.rgb = vec3(i); + gl_FragColor.a = 1.0; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl new file mode 100644 index 0000000000..db8775f024 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl @@ -0,0 +1,20 @@ +/** + * @file giV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; + +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res; + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl new file mode 100644 index 0000000000..5e69bf36d9 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl @@ -0,0 +1,80 @@ +/** + * @file postDeferredF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; + +uniform sampler2DRect localLightMap; +uniform sampler2DRect sunLightMap; +uniform sampler2DRect giLightMap; +uniform sampler2DRect edgeMap; + +uniform sampler2D luminanceMap; + +uniform sampler2DRect lightMap; + +uniform sampler2D lightFunc; +uniform sampler2D noiseMap; + +uniform float sun_lum_scale; +uniform float sun_lum_offset; +uniform float lum_scale; +uniform float lum_lod; +uniform vec4 ambient; +uniform float gi_brightness; +uniform float gi_luminance; + +uniform vec4 sunlight_color; + +uniform vec2 screen_res; +varying vec2 vary_fragcoord; + +void main() +{ + vec2 tc = vary_fragcoord.xy; + vec4 lcol = texture2DLod(luminanceMap, vec2(0.5, 0.5), lum_lod); + + vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; + vec4 sun_col = texture2DRect(sunLightMap, vary_fragcoord.xy); + vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb; + + float scol = texture2DRect(lightMap, vary_fragcoord.xy).r; + + vec3 diff = texture2DRect(diffuseRect, vary_fragcoord.xy).rgb; + vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); + + gi_col = gi_col*(diff.rgb+spec.rgb*spec.a); + + float lum = 1.0-clamp(pow(lcol.r, gi_brightness)+sun_lum_offset, 0.0, 1.0); + + lum *= sun_lum_scale; + + sun_col *= 1.0+(lum*lum_scale*scol); + + vec4 col; + col.rgb = gi_col+sun_col.rgb+local_col; + + col.a = sun_col.a; + + vec3 bcol = vec3(0,0,0); + float tweight = 0.0; + for (int i = 0; i < 16; i++) + { + float weight = (float(i)+1.0)/2.0; + bcol += texture2DLod(luminanceMap, vary_fragcoord.xy/screen_res, weight).rgb*weight*weight*weight; + tweight += weight*weight; + } + + bcol /= tweight; + bcol *= gi_luminance; + col.rgb += bcol*lum; + + gl_FragColor = col; + //gl_FragColor.rgb = texture2DRect(giLightMap, vary_fragcoord.xy).rgb; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl new file mode 100644 index 0000000000..9819232fd5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl @@ -0,0 +1,17 @@ +/** + * @file postDeferredV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl new file mode 100644 index 0000000000..901b60af59 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl @@ -0,0 +1,69 @@ +/** + * @file postgiF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2DRect normalMap; +uniform sampler2DRect giLightMap; +uniform sampler2D noiseMap; +uniform sampler2D giMip; +uniform sampler2DRect edgeMap; + + +uniform vec2 delta; +uniform float kern_scale; +uniform float gi_edge_weight; +uniform float gi_blur_brightness; + +varying vec2 vary_fragcoord; + +void main() +{ + vec2 dlt = kern_scale*delta; + float defined_weight = 0.0; + vec3 col = vec3(0.0); + + float e = 1.0; + + for (int i = 1; i < 8; i++) + { + vec2 tc = vary_fragcoord.xy + float(i) * dlt; + + e = max(e, 0.0); + float wght = e; + + col += texture2DRect(giLightMap, tc).rgb*wght; + defined_weight += wght; + + e *= e; + e -=(texture2DRect(edgeMap, tc.xy-dlt*0.25).a+ + texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight; + } + + e = 1.0; + + for (int i = 1; i < 8; i++) + { + vec2 tc = vary_fragcoord.xy - float(i) * dlt; + + e = max(e,0.0); + float wght = e; + + col += texture2DRect(giLightMap, tc).rgb*wght; + defined_weight += wght; + + e *= e; + e -= (texture2DRect(edgeMap, tc.xy-dlt*0.25).a+ + texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight; + + } + + col /= max(defined_weight, 0.01); + + gl_FragColor.rgb = col * gi_blur_brightness; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl new file mode 100644 index 0000000000..6adcda82a3 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl @@ -0,0 +1,17 @@ +/** + * @file postgiV.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +varying vec2 vary_fragcoord; +uniform vec2 screen_res; + +void main() +{ + //transform vertex + gl_Position = ftransform(); + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl new file mode 100644 index 0000000000..96a083b522 --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -0,0 +1,297 @@ +/** + * @file softenLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect normalMap; +uniform sampler2DRect lightMap; +uniform sampler2D noiseMap; +uniform samplerCube environmentMap; +uniform sampler2D lightFunc; +uniform vec3 gi_quad; + +uniform float blur_size; +uniform float blur_fidelity; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +//uniform vec4 camPosWorld; +uniform vec4 gamma; +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 distance_multiplier; +uniform vec4 max_y; +uniform vec4 glow; +uniform float scene_light_strength; +uniform vec3 env_mat[3]; +uniform vec4 shadow_clip; +uniform mat3 ssao_effect_mat; + +uniform sampler2DRect depthMap; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; + +vec3 vary_PositionEye; + +vec3 vary_SunlitColor; +vec3 vary_AmblitColor; +vec3 vary_AdditiveColor; +vec3 vary_AtmosAttenuation; +uniform float gi_ambiance; + +vec4 getPosition(vec2 pos_screen) +{ //get position in screen space (world units) given window coordinate and depth map + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 getPositionEye() +{ + return vary_PositionEye; +} +vec3 getSunlitColor() +{ + return vary_SunlitColor; +} +vec3 getAmblitColor() +{ + return vary_AmblitColor; +} +vec3 getAdditiveColor() +{ + return vary_AdditiveColor; +} +vec3 getAtmosAttenuation() +{ + return vary_AtmosAttenuation; +} + + +void setPositionEye(vec3 v) +{ + vary_PositionEye = v; +} + +void setSunlitColor(vec3 v) +{ + vary_SunlitColor = v; +} + +void setAmblitColor(vec3 v) +{ + vary_AmblitColor = v; +} + +void setAdditiveColor(vec3 v) +{ + vary_AdditiveColor = v; +} + +void setAtmosAttenuation(vec3 v) +{ + vary_AtmosAttenuation = v; +} + +void calcAtmospherics(vec3 inPositionEye, float ambFactor) { + + vec3 P = inPositionEye; + setPositionEye(P); + + //(TERRAIN) limit altitude + if (P.y > max_y.x) P *= (max_y.x / P.y); + if (P.y < -max_y.x) P *= (-max_y.x / P.y); + + vec3 tmpLightnorm = lightnorm.xyz; + + vec3 Pn = normalize(P); + float Plen = length(P); + + vec4 temp1 = vec4(0); + vec3 temp2 = vec3(0); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + //sunlight attenuation effect (hue and brightness) due to atmosphere + //this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); + //I had thought blue_density and haze_density should have equal weighting, + //but attenuation due to haze_density tends to seem too strong + + temp1 = blue_density + vec4(haze_density.r); + blue_weight = blue_density / temp1; + haze_weight = vec4(haze_density.r) / temp1; + + //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain) + temp2.y = max(0.0, tmpLightnorm.y); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // main atmospheric scattering line integral + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); + + //final atmosphere attenuation factor + setAtmosAttenuation(temp1.rgb); + + //compute haze glow + //(can use temp2.x as temp because we haven't used it yet) + temp2.x = dot(Pn, tmpLightnorm.xyz); + temp2.x = 1. - temp2.x; + //temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .03); //was glow.y + //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot) + temp2.x *= glow.x; + //higher glow.x gives dimmer glow (because next step is 1 / "angle") + temp2.x = pow(temp2.x, glow.z); + //glow.z should be negative, so we're doing a sort of (1 / "angle") function + + //add "minimum anti-solar illumination" + temp2.x += .25; + + //increase ambient when there are more clouds + vec4 tmpAmbient = ambient*gi_ambiance + (vec4(1.) - ambient*gi_ambiance) * cloud_shadow.x * 0.5; + + /* decrease value and saturation (that in HSV, not HSL) for occluded areas + * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html + * // The following line of code performs the equivalent of: + * float ambAlpha = tmpAmbient.a; + * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis + * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); + * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); + */ + tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); + + //haze color + setAdditiveColor( + vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x + + tmpAmbient))); + + //brightness of surface both sunlight and ambient + setSunlitColor(vec3(sunlight * .5)); + setAmblitColor(vec3(tmpAmbient * .25)); + setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); +} + +vec3 atmosLighting(vec3 light) +{ + light *= getAtmosAttenuation().r; + light += getAdditiveColor(); + return (2.0 * light); +} + +vec3 atmosTransport(vec3 light) { + light *= getAtmosAttenuation().r; + light += getAdditiveColor() * 2.0; + return light; +} +vec3 atmosGetDiffuseSunlightColor() +{ + return getSunlitColor(); +} + +vec3 scaleDownLight(vec3 light) +{ + return (light / scene_light_strength ); +} + +vec3 scaleUpLight(vec3 light) +{ + return (light * scene_light_strength); +} + +vec3 atmosAmbient(vec3 light) +{ + return getAmblitColor() + light / 2.0; +} + +vec3 atmosAffectDirectionalLight(float lightIntensity) +{ + return getSunlitColor() * lightIntensity; +} + +vec3 scaleSoftClip(vec3 light) +{ + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +void main() +{ + vec2 tc = vary_fragcoord.xy; + vec3 pos = getPosition(tc).xyz; + vec3 norm = texture2DRect(normalMap, tc).xyz*2.0-1.0; + //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; + + float da = max(dot(norm.xyz, vary_light.xyz), 0.0); + + vec4 diffuse = texture2DRect(diffuseRect, tc); + vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); + + da = texture2D(lightFunc, vec2(da, 0.0)).a; + + vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; + float scol = max(scol_ambocc.r, diffuse.a); + float ambocc = scol_ambocc.g; + + calcAtmospherics(pos.xyz, ambocc); + + vec3 col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + + col *= diffuse.rgb; + + if (spec.a > 0.0) + { + vec3 ref = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(ref, vary_light.xyz); + col.rgb += vary_SunlitColor*scol*spec.rgb*texture2D(lightFunc, vec2(sa, spec.a)).a; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + + gl_FragColor.rgb = col; + + //gl_FragColor.rgb = gi_col.rgb; + gl_FragColor.a = 0.0; + + //gl_FragColor.rg = scol_ambocc.rg; + //gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb; + //gl_FragColor.rgb = norm.rgb*0.5+0.5; + //gl_FragColor.rgb = vec3(ambocc); + //gl_FragColor.rgb = vec3(scol); +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl new file mode 100644 index 0000000000..ad8af4780d --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl @@ -0,0 +1,24 @@ +/** + * @file softenLightF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform vec2 screen_res; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; +void main() +{ + //transform vertex + gl_Position = ftransform(); + + vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; + vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; + + vec4 tex = gl_MultiTexCoord0; + tex.w = 1.0; + + vary_light = gl_MultiTexCoord0; +} diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl new file mode 100644 index 0000000000..258acee08c --- /dev/null +++ b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl @@ -0,0 +1,18 @@ +/** + * @file treeF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +uniform sampler2D diffuseMap; + +varying vec3 vary_normal; + +void main() +{ + vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy); + gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005); + gl_FragData[1] = vec4(0,0,0,0); + gl_FragData[2] = vec4(normalize(vary_normal)*0.5+0.5, 0.0); +} diff --git a/indra/newview/app_settings/std_bump.ini b/indra/newview/app_settings/std_bump.ini index f34e21ce32..561e04c33c 100644 --- a/indra/newview/app_settings/std_bump.ini +++ b/indra/newview/app_settings/std_bump.ini @@ -1,18 +1,18 @@ LLStandardBumpmap version 1 -woodgrain 058c75c0-a0d5-f2f8-43f3-e9699a89c2fc.j2c -bark 6c9fa78a-1c69-2168-325b-3e03ffa348ce.j2c -bricks b8eed5f0-64b7-6e12-b67f-43fa8e773440.j2c -checker 9deab416-9c63-78d6-d558-9a156f12044c.j2c -concrete db9d39ec-a896-c287-1ced-64566217021e.j2c -crustytile f2d7b6f6-4200-1e9a-fd5b-96459e950f94.j2c -cutstone d9258671-868f-7511-c321-7baef9e948a4.j2c -discs d21e44ca-ff1c-a96e-b2ef-c0753426b7d9.j2c -gravel 4726f13e-bd07-f2fb-feb0-bfa2ac58ab61.j2c -petridish e569711a-27c2-aad4-9246-0c910239a179.j2c -siding 073c9723-540c-5449-cdd4-0e87fdc159e3.j2c -stonetile ae874d1a-93ef-54fb-5fd3-eb0cb156afc0.j2c -stucco 92e66e00-f56f-598a-7997-048aa64cde18.j2c -suction 83b77fc6-10b4-63ec-4de7-f40629f238c5.j2c -weave 735198cf-6ea0-2550-e222-21d3c6a341ae.j2c +woodgrain 058c75c0-a0d5-f2f8-43f3-e9699a89c2fc +bark 6c9fa78a-1c69-2168-325b-3e03ffa348ce +bricks b8eed5f0-64b7-6e12-b67f-43fa8e773440 +checker 9deab416-9c63-78d6-d558-9a156f12044c +concrete db9d39ec-a896-c287-1ced-64566217021e +crustytile f2d7b6f6-4200-1e9a-fd5b-96459e950f94 +cutstone d9258671-868f-7511-c321-7baef9e948a4 +discs d21e44ca-ff1c-a96e-b2ef-c0753426b7d9 +gravel 4726f13e-bd07-f2fb-feb0-bfa2ac58ab61 +petridish e569711a-27c2-aad4-9246-0c910239a179 +siding 073c9723-540c-5449-cdd4-0e87fdc159e3 +stonetile ae874d1a-93ef-54fb-5fd3-eb0cb156afc0 +stucco 92e66e00-f56f-598a-7997-048aa64cde18 +suction 83b77fc6-10b4-63ec-4de7-f40629f238c5 +weave 735198cf-6ea0-2550-e222-21d3c6a341ae |