diff options
| author | Oz Linden <oz@lindenlab.com> | 2012-06-28 10:35:22 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2012-06-28 10:35:22 -0400 | 
| commit | 764d1e3cafa3e86f1f44a4c2bec0705879b9da38 (patch) | |
| tree | a2ac72c6625c729e73ae6077e790a104c2b598a3 /indra/newview/app_settings | |
| parent | ba90a4ec367d47a6876962d7d071cf4615289a11 (diff) | |
| parent | 90547ff411db177bf6424ca553449a81a808fc0f (diff) | |
merge up to 3.3.3-release
Diffstat (limited to 'indra/newview/app_settings')
10 files changed, 430 insertions, 315 deletions
| diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 15434f2b8f..be79f91919 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -1,45 +1,101 @@  <?xml version="1.0"?>  <llsd>    <map> -    <key>help</key> +    <!-- Please insert new keys in alphabetical order. --> +    <key>analyzeperformance</key>      <map>        <key>desc</key> -      <string>display this help message</string> +      <string>When used in conjunction with logperformance, analyzes result of log against baseline.</string> +      <key>map-to</key> +      <string>AnalyzePerformance</string> +    </map> -      <key>short</key> -      <string>h</string> +    <key>autologin</key> +    <map> +      <key>desc</key> +      <string>log in as last saved user</string> +      <key>map-to</key> +      <string>AutoLogin</string>      </map> -    <key>port</key> +    <key>channel</key>      <map>        <key>count</key>        <integer>1</integer> -      <key>map-to</key> -      <string>UserConnectionPort</string> +      <!-- Special case. Not mapped to a setting. -->      </map> -    <key>drop</key> +    <key>console</key>      <map>        <key>count</key>        <integer>1</integer>        <key>map-to</key> -      <string>PacketDropPercentage</string> +      <string>ShowConsoleWindow</string>      </map> -    <key>inbw</key> +    <key>cooperative</key>      <map> +      <key>desc</key> +      <string>Yield some idle time to local host.</string>        <key>count</key>        <integer>1</integer>        <key>map-to</key> -      <string>InBandwidth</string> +      <string>YieldTime</string>      </map> -    <key>outbw</key> +    <key>crashonstartup</key> +    <map> +      <key>desc</key> +      <string>Crashes on startup. For QA use.</string> +      <key>map-to</key> +      <string>CrashOnStartup</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>debugviews</key> +    <map> +      <key>map-to</key> +      <string>DebugViews</string> +    </map> + +    <key>disablecrashlogger</key> +    <map> +      <key>desc</key> +      <string>Disables the crash logger and lets the OS handle crashes</string> +      <key>map-to</key> +      <string>DisableCrashLogger</string> +    </map> + +    <key>drop</key>      <map>        <key>count</key>        <integer>1</integer>        <key>map-to</key> -      <string>OutBandwidth</string> +      <string>PacketDropPercentage</string> +    </map> + +    <key>god</key> +    <map> +      <key>desc</key> +      <string>Log in a god if you have god access.</string> +      <key>map-to</key> +      <string>ConnectAsGod</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>grid</key> @@ -52,16 +108,13 @@        <string>CmdLineGridChoice</string>      </map> -    <key>loginuri</key> +    <key>help</key>      <map>        <key>desc</key> -      <string>login server and CGI script to use</string> -      <key>count</key> -      <integer>1</integer> -      <key>compose</key> -      <boolean>true</boolean> -      <key>map-to</key> -      <string>CmdLineLoginURI</string> +      <string>display this help message</string> + +      <key>short</key> +      <string>h</string>      </map>      <key>helperuri</key> @@ -74,44 +127,73 @@        <string>CmdLineHelperURI</string>      </map> -    <key>debugviews</key> +    <key>ignorepixeldepth</key>      <map> +      <key>desc</key> +      <string>Ignore pixel depth settings.</string>        <key>map-to</key> -      <string>DebugViews</string> +      <string>IgnorePixelDepth</string>      </map> -    <key>skin</key> +    <key>inbw</key> +    <map> +      <key>count</key> +      <integer>1</integer> +      <key>map-to</key> +      <string>InBandwidth</string> +    </map> + +    <key>leap</key>      <map>        <key>desc</key> -      <string>ui/branding skin folder to use</string> +      <string>command line to run an LLSD Event API Plugin</string>        <key>count</key>        <integer>1</integer> +      <!-- you can specify multiple such plugins --> +      <key>compose</key> +      <boolean>true</boolean>        <key>map-to</key> -      <string>SkinFolder</string> +      <string>LeapCommand</string>      </map> -    <key>autologin</key> +    <key>logfile</key> +    <map> +      <key>count</key> +      <integer>1</integer> +      <key>map-to</key> +      <string>UserLogFile</string> +    </map> +     +    <key>login</key>      <map>        <key>desc</key> -      <string>log in as last saved user</string> +      <string>3 tokens: first, last and password</string> +      <key>count</key> +      <integer>3</integer>        <key>map-to</key> -      <string>AutoLogin</string> +      <string>UserLoginInfo</string>      </map> -    <key>quitafter</key> +    <key>loginpage</key>      <map> +      <key>desc</key> +      <string>Login authentication page to use.</string>        <key>count</key>        <integer>1</integer>        <key>map-to</key> -      <string>QuitAfterSeconds</string> +      <string>LoginPage</string>      </map> -    <key>logperformance</key> +    <key>loginuri</key>      <map>        <key>desc</key> -      <string>Log performance metrics for benchmarking</string> +      <string>login server and CGI script to use</string> +      <key>count</key> +      <integer>1</integer> +      <key>compose</key> +      <boolean>true</boolean>        <key>map-to</key> -      <string>LogPerformance</string> +      <string>CmdLineLoginURI</string>      </map>      <key>logmetrics</key> @@ -123,29 +205,35 @@        <key>map-to</key>        <string>LogMetrics</string>      </map> -     -    <key>analyzeperformance</key> + +    <key>logperformance</key>      <map>        <key>desc</key> -      <string>When used in conjunction with logperformance, analyzes result of log against baseline.</string> +      <string>Log performance metrics for benchmarking</string>        <key>map-to</key> -      <string>AnalyzePerformance</string> +      <string>LogPerformance</string>      </map> -    <key>debugsession</key> +    <key>multiple</key>		        <map>        <key>desc</key> -      <string>Run as if RenderDebugGL is TRUE, but log errors until end of session.</string> +      <string>Allow multiple viewers.</string>        <key>map-to</key> -      <string>DebugSession</string> +      <string>AllowMultipleViewers</string>      </map> -    <key>replaysession</key> +    <key>noaudio</key> +    <map> +      <key>map-to</key> +      <string>NoAudio</string> +    </map> + +    <key>noinvlib</key>      <map>        <key>desc</key> -      <string>After login, replay last recorded session and quit.</string> +      <string>Do not request the inventory library.</string>        <key>map-to</key> -      <string>ReplaySession</string> +      <string>NoInventoryLibrary</string>      </map>      <key>nonotifications</key> @@ -156,22 +244,10 @@        <string>IgnoreAllNotifications</string>            </map>     -    <key>rotate</key> -    <map> -      <key>map-to</key> -      <string>RotateRight</string> -    </map> - -    <key>noaudio</key> -    <map> -      <key>map-to</key> -      <string>NoAudio</string> -    </map> - -    <key>nosound</key> +    <key>nopreload</key>      <map>        <key>map-to</key> -      <string>NoAudio</string> +      <string>NoPreload</string>      </map>      <key>noprobe</key> @@ -186,151 +262,134 @@        <string>NoQuickTime</string>      </map> -    <key>nopreload</key> +    <key>nosound</key>      <map>        <key>map-to</key> -      <string>NoPreload</string> +      <string>NoAudio</string>      </map> -    <key>purge</key> +    <key>no-verify-ssl-cert</key>      <map> -      <key>desc</key> -      <string>Delete files in the cache.</string>        <key>map-to</key> -      <string>PurgeCacheOnNextStartup</string> +      <string>NoVerifySSLCert</string>      </map> -    <key>noinvlib</key> +    <key>novoice</key>      <map>        <key>desc</key> -      <string>Do not request the inventory library.</string> +      <string>Disable voice.</string>        <key>map-to</key> -      <string>NoInventoryLibrary</string> +      <string>CmdLineDisableVoice</string>      </map> -    <key>logfile</key> +    <key>outbw</key>      <map>        <key>count</key>        <integer>1</integer>        <key>map-to</key> -      <string>UserLogFile</string> +      <string>OutBandwidth</string>      </map> -    <key>graphicslevel</key> +    <key>port</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> +      <key>map-to</key> +      <string>UserConnectionPort</string>      </map> -    <key>setdefault</key> +    <key>purge</key>      <map>        <key>desc</key> -      <string>specify the value of a particular configuration variable which can be overridden by settings.xml.</string> -      <key>count</key> -      <integer>2</integer> -      <!-- Special case. Mapped to settings procedurally. --> +      <string>Delete files in the cache.</string> +      <key>map-to</key> +      <string>PurgeCacheOnNextStartup</string>      </map> -    <key>set</key> +    <key>qa</key>      <map>        <key>desc</key> -      <string>specify the value of a particular configuration variable that overrides all other settings.</string> -      <key>count</key> -      <integer>2</integer> -      <key>compose</key> -      <boolean>true</boolean> -      <!-- Special case. Mapped to settings procedurally. --> +      <string>Activated debugging menu in Advanced Settings.</string> +      <key>map-to</key> +      <string>QAMode</string>      </map> -    <key>settings</key> +    <key>quitafter</key>      <map> -      <key>desc</key> -      <string>Specify the filename of a configuration file.</string>        <key>count</key>        <integer>1</integer> -      <!-- Special case. Mapped to settings procedurally. --> +      <key>map-to</key> +      <string>QuitAfterSeconds</string>      </map> - -    <key>sessionsettings</key> +     +    <key>replaysession</key>      <map>        <key>desc</key> -      <string>Specify the filename of a configuration file that contains temporary per-session configuration overrides.</string> -      <key>count</key> -      <integer>1</integer> -      <!-- Special case. Mapped to settings procedurally. --> +      <string>After login, replay last recorded session and quit.</string> +      <key>map-to</key> +      <string>ReplaySession</string>      </map> -    <key>usersessionsettings</key> -    <map> -      <key>desc</key> -      <string>Specify the filename of a configuration file that contains temporary per-session configuration user overrides.</string> -      <key>count</key> -      <integer>1</integer> -      <!-- Special case. Mapped to settings procedurally. --> -    </map> -     -    <key>login</key> +    <key>rotate</key>      <map> -      <key>desc</key> -      <string>3 tokens: first, last and password</string> -      <key>count</key> -      <integer>3</integer>        <key>map-to</key> -      <string>UserLoginInfo</string> +      <string>RotateRight</string>      </map> -    <key>god</key> +    <key>safe</key>      <map>        <key>desc</key> -      <string>Log in a god if you have god access.</string> +      <string>Reset preferences, run in safe mode.</string>        <key>map-to</key> -      <string>ConnectAsGod</string> +      <string>SafeMode</string>      </map> -    <key>console</key> +    <key>sessionsettings</key>      <map> +      <key>desc</key> +      <string>Specify the filename of a configuration file that contains temporary per-session configuration overrides.</string>        <key>count</key>        <integer>1</integer> -      <key>map-to</key> -      <string>ShowConsoleWindow</string> +      <!-- Special case. Mapped to settings procedurally. -->      </map> -    <key>safe</key> +    <key>set</key>      <map>        <key>desc</key> -      <string>Reset preferences, run in safe mode.</string> -      <key>map-to</key> -      <string>SafeMode</string> +      <string>specify the value of a particular configuration variable that overrides all other settings.</string> +      <key>count</key> +      <integer>2</integer> +      <key>compose</key> +      <boolean>true</boolean> +      <!-- Special case. Mapped to settings procedurally. -->      </map> -    <key>multiple</key>		   +    <key>setdefault</key>      <map>        <key>desc</key> -      <string>Allow multiple viewers.</string> -      <key>map-to</key> -      <string>AllowMultipleViewers</string> +      <string>specify the value of a particular configuration variable which can be overridden by settings.xml.</string> +      <key>count</key> +      <integer>2</integer> +      <!-- Special case. Mapped to settings procedurally. -->      </map> -    <key>novoice</key> +    <key>settings</key>      <map>        <key>desc</key> -      <string>Disable voice.</string> -      <key>map-to</key> -      <string>CmdLineDisableVoice</string> +      <string>Specify the filename of a configuration file.</string> +      <key>count</key> +      <integer>1</integer> +      <!-- Special case. Mapped to settings procedurally. -->      </map> -    <key>url</key> +    <key>skin</key>      <map>        <key>desc</key> -      <string>Startup location</string>             +      <string>ui/branding skin folder to use</string>        <key>count</key>        <integer>1</integer> -      <key>last_option</key> -      <boolean>true</boolean> -      <!-- Special case. Not mapped to a setting. --> +      <key>map-to</key> +      <string>SkinFolder</string>      </map>      <key>slurl</key> @@ -346,69 +405,24 @@        <!-- Special case. Not mapped to a setting. -->      </map> -    <key>ignorepixeldepth</key> -    <map> -      <key>desc</key> -      <string>Ignore pixel depth settings.</string> -      <key>map-to</key> -      <string>IgnorePixelDepth</string> -    </map> - -    <key>cooperative</key> +    <key>url</key>      <map>        <key>desc</key> -      <string>Yield some idle time to local host.</string> -      <key>count</key> -      <integer>1</integer> -      <key>map-to</key> -      <string>YieldTime</string> -    </map> - -    <key>no-verify-ssl-cert</key> -    <map> -      <key>map-to</key> -      <string>NoVerifySSLCert</string> -    </map> - -    <key>channel</key> -    <map> +      <string>Startup location</string>                    <key>count</key>        <integer>1</integer> +      <key>last_option</key> +      <boolean>true</boolean>        <!-- Special case. Not mapped to a setting. -->      </map> -    <key>loginpage</key> +    <key>usersessionsettings</key>      <map>        <key>desc</key> -      <string>Login authentication page to use.</string> +      <string>Specify the filename of a configuration file that contains temporary per-session configuration user overrides.</string>        <key>count</key>        <integer>1</integer> -      <key>map-to</key> -      <string>LoginPage</string> -    </map> - -    <key>qa</key> -    <map> -      <key>desc</key> -      <string>Activated debugging menu in Advanced Settings.</string> -      <key>map-to</key> -      <string>QAMode</string> -    </map> - -    <key>crashonstartup</key> -    <map> -      <key>desc</key> -      <string>Crashes on startup. For QA use.</string> -      <key>map-to</key> -      <string>CrashOnStartup</string> -    </map> - -    <key>disablecrashlogger</key> -    <map> -      <key>desc</key> -      <string>Disables the crash logger and lets the OS handle crashes</string> -      <key>map-to</key> -      <string>DisableCrashLogger</string> +      <!-- Special case. Mapped to settings procedurally. -->      </map>    </map>  </llsd> diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index a76eb3cd37..64122bbb6c 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -20,7 +20,7 @@  					<key>tags</key>  						<array>  							<string>AppInit</string> -              <string>Capabilities</string> +							<string>Capabilities</string>  							<string>SystemInfo</string>  							<string>TextureCache</string>  							<string>AppCache</string> @@ -42,8 +42,10 @@  						</array>  					<key>tags</key>  						<array> -							<!-- sample entry for debugging a specific item	--> -<!--						<string>Voice</string>		--> +						<!-- sample entry for debugging specific items	 +						     <string>Avatar</string> +						     <string>Voice</string>		 +						-->  						</array>  				</map>  			</array> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 05c05b9393..c9b4de0140 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -335,17 +335,6 @@        <key>Value</key>        <integer>1</integer>      </map> -  <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> @@ -1936,7 +1925,7 @@      <key>Type</key>      <string>Boolean</string>      <key>Value</key> -    <integer>0</integer> +    <integer>1</integer>    </map>      <key>DebugBeaconLineWidth</key>      <map> @@ -4601,6 +4590,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>LeapCommand</key> +    <map> +      <key>Comment</key> +      <string>Zero or more command lines to run LLSD Event API Plugin programs.</string> +      <key>Persist</key> +      <integer>0</integer> +      <key>Type</key> +      <string>LLSD</string> +      <key>Value</key> +      <array /> +    </map>      <key>LSLFindCaseInsensitivity</key>          <map>          <key>Comment</key> @@ -7164,7 +7164,7 @@      <key>QAModeEventHostPort</key>      <map>        <key>Comment</key> -      <string>Port on which lleventhost should listen</string> +      <string>DEPRECATED: Port on which lleventhost should listen</string>        <key>Persist</key>        <integer>0</integer>        <key>Type</key> @@ -7183,6 +7183,17 @@        <key>Value</key>        <integer>-1</integer>      </map> +    <key>QAModeMetrics</key> +    <map> +      <key>Comment</key> +      <string>"Enables QA features (logging, faster cycling) for metrics collector"</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>QuietSnapshotsToDisk</key>      <map>        <key>Comment</key> @@ -7631,6 +7642,17 @@        <key>Value</key>        <integer>1</integer>      </map> +  <key>RenderCompressTextures</key> +  <map> +    <key>Comment</key> +    <string>Enable texture compression on OpenGL 3.0 and later implementations (EXPERIMENTAL, requires restart)</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map>      <key>RenderPerformanceTest</key>      <map>        <key>Comment</key> @@ -9123,28 +9145,19 @@      <key>Value</key>      <integer>0</integer>    </map> -    <key>RenderUseShaderLOD</key> -    <map> -      <key>Comment</key> -      <string>Whether we want to have different shaders for LOD</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map> -    <key>RenderUseShaderNearParticles</key> -    <map> -      <key>Comment</key> -      <string>Whether we want to use shaders on near particles</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>0</integer> -    </map> +     +  <key>RenderAutoHideSurfaceAreaLimit</key> +  <map> +    <key>Comment</key> +    <string>Maximum surface area of a set of proximal objects inworld before automatically hiding geometry to prevent system overload.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>F32</string> +    <key>Value</key> +    <integer>0</integer> +  </map> +      <key>RenderVBOEnable</key>      <map>        <key>Comment</key> @@ -10664,6 +10677,39 @@        <key>Value</key>        <real>20.0</real>      </map> +    <key>TexelPixelRatio</key> +    <map> +      <key>Comment</key> +      <string>texel pixel ratio = texel / pixel</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>F32</string> +      <key>Value</key> +      <real>1.0</real> +    </map> +    <key>TextureCameraMotionThreshold</key> +    <map> +      <key>Comment</key> +      <string>If the overall motion is lower than this value, textures will be loaded faster</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>F32</string> +      <key>Value</key> +      <real>0.2</real> +    </map> +    <key>TextureCameraMotionBoost</key> +    <map> +      <key>Comment</key> +      <string>Progressive discard level decrement when the camera is still</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>S32</string> +      <key>Value</key> +      <integer>3</integer> +    </map>      <key>TextureDecodeDisabled</key>      <map>        <key>Comment</key> @@ -10697,6 +10743,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>TextureFetchDebuggerEnabled</key> +    <map> +      <key>Comment</key> +      <string>Enable the texture fetching debugger if set</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>TextureLoadFullRes</key>      <map>        <key>Comment</key> @@ -10719,6 +10776,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>TextureNewByteRange</key> +    <map> +      <key>Comment</key> +      <string>Use the new more accurate byte range computation for j2c discard levels</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map>      <key>TexturePickerShowFolders</key>      <map>        <key>Comment</key> @@ -10741,6 +10809,17 @@        <key>Value</key>        <integer>2</integer>      </map> +    <key>TextureReverseByteRange</key> +    <map> +      <key>Comment</key> +      <string>Minimal percent of the optimal byte range allowed to render a given discard level</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>S32</string> +      <key>Value</key> +      <integer>50</integer> +    </map>      <key>ThrottleBandwidthKBPS</key>      <map>        <key>Comment</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl index cf8cf8364a..bced4a5577 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl @@ -29,11 +29,11 @@ out vec4 frag_color;  #define frag_color gl_FragColor  #endif -uniform float minimum_alpha; -  uniform sampler2D diffuseMap; -VARYING vec4 post_pos; +VARYING float pos_zd2; +VARYING float pos_w; +VARYING float target_pos_x;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; @@ -41,12 +41,20 @@ void main()  {  	float alpha = diffuseLookup(vary_texcoord0.xy).a * vertex_color.a; -	if (alpha < minimum_alpha) +	if (alpha < 0.05) // treat as totally transparent  	{  		discard;  	} +	if (alpha < 0.88) // treat as semi-transparent +	{ +	  if (fract(0.5*floor(target_pos_x / pos_w )) < 0.25) +	  { +	    discard; +	  } +	} +  	frag_color = vec4(1,1,1,1); -	gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0); +	gl_FragDepth = max(pos_zd2/pos_w+0.5, 0.0);  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl index 7d3b06c56e..c1f2d90712 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl @@ -25,12 +25,15 @@  uniform mat4 texture_matrix0;  uniform mat4 modelview_projection_matrix; +uniform float shadow_target_width;  ATTRIBUTE vec3 position;  ATTRIBUTE vec4 diffuse_color;  ATTRIBUTE vec2 texcoord0; -VARYING vec4 post_pos; +VARYING float pos_zd2; +VARYING float pos_w; +VARYING float target_pos_x;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; @@ -39,8 +42,11 @@ void passTextureIndex();  void main()  {  	//transform vertex -	vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0); -	post_pos = pos; +	vec4 pre_pos = vec4(position.xyz, 1.0); +	vec4 pos = modelview_projection_matrix * pre_pos; +	target_pos_x = 0.5 * (shadow_target_width - 1.0) * pos.x; +	pos_w = pos.w; +	pos_zd2 = pos.z * 0.5;  	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 08f6ec63fe..8db4cb58cf 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -58,20 +58,22 @@ uniform float shadow_bias;  uniform mat4 inv_proj; -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; + +	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here  	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; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +                         +        return shadow*0.2;  } @@ -101,7 +103,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap3, lpos, 0.25)*w; +			shadow += pcfShadow(shadowMap3, lpos)*w;  			weight += w;  			shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);  		} @@ -114,7 +116,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap2, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap2, lpos)*w;  			weight += w;  		} @@ -126,7 +128,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; -			shadow += pcfShadow(shadowMap1, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap1, lpos)*w;  			weight += w;  		} @@ -138,7 +140,7 @@ void main()  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; -			shadow += pcfShadow(shadowMap0, lpos, 1.0)*w; +			shadow += pcfShadow(shadowMap0, lpos)*w;  			weight += w;  		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl index aae6a070e2..33958a5010 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl @@ -71,20 +71,22 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; + +	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here  	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; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +                         +        return shadow*0.2;  } @@ -114,7 +116,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap3, lpos, 0.25)*w; +			shadow += pcfShadow(shadowMap3, lpos)*w;  			weight += w;  			shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);  		} @@ -127,7 +129,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap2, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap2, lpos)*w;  			weight += w;  		} @@ -139,7 +141,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; -			shadow += pcfShadow(shadowMap1, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap1, lpos)*w;  			weight += w;  		} @@ -151,7 +153,7 @@ void main()  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; -			shadow += pcfShadow(shadowMap0, lpos, 1.0)*w; +			shadow += pcfShadow(shadowMap0, lpos)*w;  			weight += w;  		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl index 931577359e..ba6f3ace53 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl @@ -70,20 +70,22 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; + +	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here  	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; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +                         +        return shadow*0.2;  } @@ -113,7 +115,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap3, lpos, 0.25)*w; +			shadow += pcfShadow(shadowMap3, lpos)*w;  			weight += w;  			shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);  		} @@ -126,7 +128,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; -			shadow += pcfShadow(shadowMap2, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap2, lpos)*w;  			weight += w;  		} @@ -138,7 +140,7 @@ void main()  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; -			shadow += pcfShadow(shadowMap1, lpos, 0.75)*w; +			shadow += pcfShadow(shadowMap1, lpos)*w;  			weight += w;  		} @@ -150,7 +152,7 @@ void main()  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; -			shadow += pcfShadow(shadowMap0, lpos, 1.0)*w; +			shadow += pcfShadow(shadowMap0, lpos)*w;  			weight += w;  		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 84719c0d86..92d8adbb79 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -78,42 +78,42 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias*scl; -	 + +	stc.x = floor(stc.x + fract(pos_screen.y*0.666666666)); // add some jitter to X sample pos according to Y to disguise the snapping going on here +  	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); +	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; +	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; +	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, 1.5, 0.0)).x; +	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, -1.5, 0.0)).x; -	return shadow/5.0; -	 -	//return shadow; +        return shadow*0.2;  } -float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += spot_shadow_bias*scl; +	stc.x = floor(proj_shadow_res.x * stc.x + fract(pos_screen.y*0.666666666)) / proj_shadow_res.x; // snap  	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; -	vec2 off = 1.5/proj_shadow_res; +	vec2 off = 1.0/proj_shadow_res; +	off.y *= 1.5; -	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; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(off.x*2.0, off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-off.x*2.0, -off.y, 0.0)).x; + +        return shadow*0.2;  }  void main()  @@ -166,7 +166,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.z, 0.0)/transition_domain.z; -				shadow += pcfShadow(shadowMap3, lpos, 0.25)*w; +				shadow += pcfShadow(shadowMap3, lpos, 0.25, pos_screen)*w;  				weight += w;  				shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);  			} @@ -179,7 +179,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  				w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; -				shadow += pcfShadow(shadowMap2, lpos, 0.75)*w; +				shadow += pcfShadow(shadowMap2, lpos, 0.5, pos_screen)*w;  				weight += w;  			} @@ -191,7 +191,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  				w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; -				shadow += pcfShadow(shadowMap1, lpos, 0.75)*w; +				shadow += pcfShadow(shadowMap1, lpos, 0.75, pos_screen)*w;  				weight += w;  			} @@ -203,7 +203,7 @@ void main()  				float w = 1.0;  				w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; -				shadow += pcfShadow(shadowMap0, lpos, 1.0)*w; +				shadow += pcfShadow(shadowMap0, lpos, 1.0, pos_screen)*w;  				weight += w;  			} @@ -237,11 +237,11 @@ void main()  	//spotlight shadow 1  	vec4 lpos = shadow_matrix[4]*spos; -	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8);  +	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8, pos_screen);   	//spotlight shadow 2  	lpos = shadow_matrix[5]*spos; -	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8);  +	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8, pos_screen);   	//frag_color.rgb = pos.xyz;  	//frag_color.b = shadow; diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index a6e22824b8..08543e5fdf 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -90,7 +90,7 @@ vec2 getKern(int i)  	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; -	 +         	return kern[i];  } @@ -139,42 +139,42 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)  	return min(ret, 1.0);  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias*scl; + +	stc.x = floor(stc.x + fract(pos_screen.y*0.666666666));  	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; +	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; +        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +                         +        return shadow*0.2;  } -float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += spot_shadow_bias*scl; +	stc.x = floor(proj_shadow_res.x * stc.x + fract(pos_screen.y*0.666666666)) / proj_shadow_res.x; // snap  	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; -	vec2 off = 1.5/proj_shadow_res; +	vec2 off = 1.0/proj_shadow_res; +	off.y *= 1.5; -	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; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(off.x*2.0, off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-off.x*2.0, -off.y, 0.0)).x; + +        return shadow*0.2;  }  void main()  @@ -227,7 +227,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.z, 0.0)/transition_domain.z; -				shadow += pcfShadow(shadowMap3, lpos, 0.25)*w; +				shadow += pcfShadow(shadowMap3, lpos, 0.25, pos_screen)*w;  				weight += w;  				shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);  			} @@ -240,7 +240,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  				w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; -				shadow += pcfShadow(shadowMap2, lpos, 0.75)*w; +				shadow += pcfShadow(shadowMap2, lpos, 0.5, pos_screen)*w;  				weight += w;  			} @@ -252,7 +252,7 @@ void main()  				float w = 1.0;  				w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  				w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; -				shadow += pcfShadow(shadowMap1, lpos, 0.75)*w; +				shadow += pcfShadow(shadowMap1, lpos, 0.75, pos_screen)*w;  				weight += w;  			} @@ -264,7 +264,7 @@ void main()  				float w = 1.0;  				w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; -				shadow += pcfShadow(shadowMap0, lpos, 1.0)*w; +				shadow += pcfShadow(shadowMap0, lpos, 1.0, pos_screen)*w;  				weight += w;  			} @@ -298,11 +298,11 @@ void main()  	//spotlight shadow 1  	vec4 lpos = shadow_matrix[4]*spos; -	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8);  +	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8, pos_screen);  	//spotlight shadow 2  	lpos = shadow_matrix[5]*spos; -	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8);  +	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8, pos_screen);  	//frag_color.rgb = pos.xyz;  	//frag_color.b = shadow; | 
