Difference between revisions of "SourceShaderEditor/Installation"

From Valve Developer Community
Jump to: navigation, search
m (added presumable reason for a malfunction on amd/ati cards)
(new version 0.2)
Line 10: Line 10:
  
 
== Changelog ==
 
== Changelog ==
<div class="scrollbox" style="max-height:10em;overflow:auto;">
+
<div class="scrollbox" style="max-height:24em;overflow:auto;">
'''Verion 0.1.2''' Changes:
+
'''Version 0.2''' Changes:
 +
* Added nodes: array, condition, sampler object, flashlight origin, parallax uv, parallax shadow
 +
* Added undo/redo to file menu, ctrl+z/ ctrl+shift+z
 +
* Added custom matrices: projection, view projection, view inverse, projection inverse, view projection inverse
 +
* Added sampler datatype
 +
* Added ( 4x3 * 4x4 ) for multiply node
 +
* Added examples: lightmap_parallax, postproc_depthglow, postproc_gaussblur_2d_singlepass (<span style="color:#A22">note</span>: really just a POC for previewing!)
 +
 
 +
* Fixed datatype of custom matrix - view
 +
* Fixed hierachy not updating when float3x3 was toggled on the multiply node
 +
* Fixed lightscale settings of Final output node not being applied correctly
 +
* Fixed lightmap lookups not automatically enforcing SRGB read in LDR mode
 +
 
 +
* VS texture samplers are now identifiable. <span style="color:#A22">This may break old shaders using the Morph node, re-compile them.</span>
 +
* Exposed datatype of texcoords/color for VS input semantics
 +
* Bridges of input jacks can now be overridden more easily
 +
* Changed refraction example to use newer float3x3 cast on multiply + user matrix in PS
 +
* Improved solver algorithm for stacked containers
 +
* Changed default texture names of fallback textures
 +
* The precache dialog will now sort all entries by name
 +
----
 +
'''Version 0.1.2''' Changes:
 
* Fixed binary path being cut off
 
* Fixed binary path being cut off
 
* Fixed solver crash
 
* Fixed solver crash
 
* Added 3dskybox support for the skymask ('''viewrender.cpp needs to be updated''')
 
* Added 3dskybox support for the skymask ('''viewrender.cpp needs to be updated''')
 
----
 
----
'''Verion 0.1.1''' Changes:
+
'''Version 0.1.1''' Changes:
 
* Fixed framebuffer copy texture 0 staying undefined
 
* Fixed framebuffer copy texture 0 staying undefined
 
* Fixed potential stability issue for fast material reload
 
* Fixed potential stability issue for fast material reload
Line 25: Line 46:
 
== Implementation files ==
 
== Implementation files ==
 
=== Download ===
 
=== Download ===
* (7z) Download version 0.1.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_1_2/SSE_implementation_v0.1.2.7z]
+
* (7z) Download version 0.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_2/SSE_implementation_v0.2.7z]
* (zip) Download version 0.1.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_1_2/SSE_implementation_v0.1.2.zip]
+
* (zip) Download version 0.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_2/SSE_implementation_v0.2.zip]
  
 
=== Installation ===
 
=== Installation ===
Line 110: Line 131:
  
 
=== Download ===
 
=== Download ===
* (7z) Download version 0.1.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_1_2/SSE_standalone_v0.1.2.7z]
+
* (7z) Download version 0.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_2/SSE_standalone_v0.2.7z]
* (zip) Download version 0.1.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_1_2/SSE_standalone_v0.1.2.zip]
+
* (zip) Download version 0.2 at [http://bio2k.homepage.t-online.de/shadereditor/v0_2/SSE_standalone_v0.2.zip]
  
 
=== Installation ===
 
=== Installation ===

Revision as of 20:01, 31 July 2011

This article will describe how to install the editor libraries into your own mod. You will be required to compile the client library at the end, so make sure that you can compile the source code from the SDK successfully.

Warning: Currently only the Source 2007 SDK is supported

Confirm:Some AMD/ATI hardware seems to show erroneous behaviour when reading negative values from textures. This solely affects the 2D preview on the graph.





Changelog

Version 0.2 Changes:

  • Added nodes: array, condition, sampler object, flashlight origin, parallax uv, parallax shadow
  • Added undo/redo to file menu, ctrl+z/ ctrl+shift+z
  • Added custom matrices: projection, view projection, view inverse, projection inverse, view projection inverse
  • Added sampler datatype
  • Added ( 4x3 * 4x4 ) for multiply node
  • Added examples: lightmap_parallax, postproc_depthglow, postproc_gaussblur_2d_singlepass (note: really just a POC for previewing!)
  • Fixed datatype of custom matrix - view
  • Fixed hierachy not updating when float3x3 was toggled on the multiply node
  • Fixed lightscale settings of Final output node not being applied correctly
  • Fixed lightmap lookups not automatically enforcing SRGB read in LDR mode
  • VS texture samplers are now identifiable. This may break old shaders using the Morph node, re-compile them.
  • Exposed datatype of texcoords/color for VS input semantics
  • Bridges of input jacks can now be overridden more easily
  • Changed refraction example to use newer float3x3 cast on multiply + user matrix in PS
  • Improved solver algorithm for stacked containers
  • Changed default texture names of fallback textures
  • The precache dialog will now sort all entries by name

Version 0.1.2 Changes:

  • Fixed binary path being cut off
  • Fixed solver crash
  • Added 3dskybox support for the skymask (viewrender.cpp needs to be updated)

Version 0.1.1 Changes:

  • Fixed framebuffer copy texture 0 staying undefined
  • Fixed potential stability issue for fast material reload
  • Fixed material picker errors in singleplayer mods


Implementation files

Download

  • (7z) Download version 0.2 at [1]
  • (zip) Download version 0.2 at [2]

Installation

  • Copy the contents of source_shader_editor/mod to the directory of your own mod (Steam/steamapps/SourceMods/MY_MOD). Among these files are the libraries that contain the editor and shader implementation, content resources and script files. The folder ../mod/shadereditorui will contain all content generated by the editor; for example your canvases can be located in ../mod/shadereditorui/canvas and temporary plus final HLSL source files will be stored in ../shadereditorui/shader_src.
  • Copy the folder source_shader_editor/code/ShaderEditor and its contents to the codebase of your mod into ../src/game/client/. If you want to change the directory, make sure that you adjust the #includes in all files accordingly!

Compile

  • Open Visual Studio and load your mods solution.
    • (optional) Add a new filter in the Source Files folder of your client project.
  • Add all implementation files (and headers) from ../src/game/client/ShaderEditor to your new filter or elsewhere into your client project.
  • Open viewrender.cpp and add the include #include "ShaderEditor/ShaderEditorSystem.h" at the top, right above #include "tier0/memdbgon.h".
  • In viewrender.cpp go to the function void CViewRender::RenderView(...) and add the three lines highlighted at the respective position:
		// if the 3d skybox world is drawn, then don't draw the normal skybox
		CSkyboxView *pSkyView = new CSkyboxView( this );
		if ( ( bDrew3dSkybox = pSkyView->Setup( view, &nClearFlags, &nSkyboxVisible ) ) != false )
		{
			AddViewToScene( pSkyView );
			g_ShaderEditorSystem->UpdateSkymask();
		}
		SafeRelease( pSkyView );

[...]

		// Now actually draw the viewmodel
		DrawViewModels( view, whatToDraw & RENDERVIEW_DRAWVIEWMODEL );

		g_ShaderEditorSystem->UpdateSkymask( bDrew3dSkybox );

		DrawUnderwaterOverlay();

		PixelVisibility_EndScene();

		// Draw fade over entire screen if needed
		byte color[4];
		bool blend;
		vieweffects->GetFadeParams( &color[0], &color[1], &color[2], &color[3], &blend );

		// Draw an overlay to make it even harder to see inside smoke particle systems.
		DrawSmokeFogOverlay();

		// Overlay screen fade on entire screen
		IMaterial* pMaterial = blend ? m_ModulateSingleColor : m_TranslucentSingleColor;
		render->ViewDrawFade( color, pMaterial );
		PerformScreenOverlay( view.x, view.y, view.width, view.height );

		// Prevent sound stutter if going slow
		engine->Sound_ExtraUpdate();	
	
		if ( !building_cubemaps.GetBool() && view.m_bDoBloomAndToneMapping )
		{
			pRenderContext.GetFrom( materials );
			{
				PIXEVENT( pRenderContext, "DoEnginePostProcessing" );

				bool bFlashlightIsOn = false;
				C_BasePlayer *pLocal = C_BasePlayer::GetLocalPlayer();
				if ( pLocal )
				{
					bFlashlightIsOn = pLocal->IsEffectActive( EF_DIMLIGHT );
				}
				DoEnginePostProcessing( view.x, view.y, view.width, view.height, bFlashlightIsOn );
			}
			pRenderContext.SafeRelease();
		}

		g_ShaderEditorSystem->CustomPostRender();

		// And here are the screen-space effects

		if ( IsPC() )
		{
			// Grab the pre-color corrected frame for editing purposes
			engine->GrabPreColorCorrectedFrame( view.x, view.y, view.width, view.height );
		}
  • Compile the solution.
  • To enable the shader editor add -shaderedit to your command line.


Stand-alone demo

Download a precompiled mod based on the Source 2007 SDK.

Download

  • (7z) Download version 0.2 at [3]
  • (zip) Download version 0.2 at [4]

Installation

Copy the mod folder into Steam/steamapps/SourceMods/ as usual. The editor should show on startup without further ado. The demo won't allow you to immediately use the shaders elsewhere, however you can still take the HLSL source files and implement them manually in your own shader library.