public MyPipeline1(bool dynamicBatching, bool instancing, int shadowMapSize, float shadowDistance, float shadowFadeRange, int shadowCascades, Vector3 shadowCascadeSplit) //constructor with configurations { GraphicsSettings.lightsUseLinearIntensity = true; if (SystemInfo.usesReversedZBuffer) { //set the shadow case for outside all cascades worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; globalShadowData.y = 1f / shadowFadeRange; this.shadowCascades = shadowCascades; this.shadowCascadeSplit = shadowCascadeSplit; #if UNITY_EDITOR Lightmapping.SetDelegate(lightmappingLightsDelegate); #endif }
public MyPipeline(bool dynamicBatching, bool instanceing, MyPostProcessingStack defaultStack, Texture2D ditherTexture, float ditherAnimationSpeed, int shadowMapSize, float shadowDistance, float shadowFadeRange, int shadowCascades, Vector3 shadowCascadeSplit, float renderScale, int msaaSamples, bool allowHDR) { GraphicsSettings.lightsUseLinearIntensity = true; if (SystemInfo.usesReversedZBuffer) { worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instanceing) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.ditherTexture = ditherTexture; if (ditherAnimationSpeed > 0f && Application.isPlaying) { ConfigureDitherAnimation(ditherAnimationSpeed); } this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; globalShadowData.y = 1f / shadowFadeRange; this.shadowCascades = shadowCascades; this.shadowCascadeSplit = shadowCascadeSplit; this.defaultStack = defaultStack; this.renderScale = renderScale; this.allowHDR = allowHDR; QualitySettings.antiAliasing = msaaSamples; this.msaaSamples = Mathf.Max(QualitySettings.antiAliasing, 1); #if UNITY_EDITOR Lightmapping.SetDelegate(lightmappingLightsDelegate); #endif }
int m_UseSrpBatcher; // only needed to match native struct #pragma warning restore 414 public DrawingSettings(ShaderTagId shaderPassName, SortingSettings sortingSettings) { m_SortingSettings = sortingSettings; m_PerObjectData = PerObjectData.None; m_Flags = DrawRendererFlags.EnableInstancing; m_OverrideMaterialInstanceId = 0; m_OverrideMaterialPassIndex = 0; m_fallbackMaterialInstanceId = 0; m_MainLightIndex = -1; fixed(int *p = shaderPassNames) { p[0] = shaderPassName.id; for (int i = 1; i < maxShaderPasses; i++) { p[i] = -1; } } m_PerObjectData = PerObjectData.None; m_Flags = DrawRendererFlags.EnableInstancing; m_UseSrpBatcher = 0; }
public MyPipeline( bool dynamicBatching, bool instancing, int shadowMapSize, float shadowDistance, int shadowCascades, Vector3 shadowCascasdeSplit ) { GraphicsSettings.lightsUseLinearIntensity = true; if (SystemInfo.usesReversedZBuffer) { worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; this.shadowCascades = shadowCascades; this.shadowCascadeSplit = shadowCascasdeSplit; }
public VXGIRenderPipeline(VXGIRenderPipelineAsset asset) { _renderer = new VXGIRenderer(this); _command = new CommandBuffer() { name = "VXGI.RenderPipeline" }; _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.opaque }; _drawRendererFlags = DrawRendererFlags.None; if (asset.dynamicBatching) { _drawRendererFlags |= DrawRendererFlags.EnableDynamicBatching; } _rendererConfiguration = RendererConfiguration.None; if (asset.environmentLighting) { _rendererConfiguration |= RendererConfiguration.PerObjectLightProbe; } if (asset.environmentReflections) { _rendererConfiguration |= RendererConfiguration.PerObjectReflectionProbes; } Shader.globalRenderPipeline = "VXGI"; GraphicsSettings.lightsUseLinearIntensity = true; GraphicsSettings.useScriptableRenderPipelineBatching = asset.SRPBatching; }
#pragma warning restore 414 public DrawRendererSettings(Camera camera, ShaderPassName shaderPassName) { rendererConfiguration = RendererConfiguration.None; flags = DrawRendererFlags.EnableInstancing; m_OverrideMaterialInstanceId = 0; m_OverrideMaterialPassIdx = 0; fixed(int *p = shaderPassNames) { for (int i = 0; i < maxShaderPasses; i++) { p[i] = -1; } } fixed(int *p = shaderPassNames) { p[0] = shaderPassName.nameIndex; } rendererConfiguration = RendererConfiguration.None; flags = DrawRendererFlags.EnableInstancing; InitializeSortSettings(camera, out sorting); }
public MyPipeline(bool dynamicBatching, bool instancing, MyPostProcessingStack _defaultStack, Texture2D _ditherTexture, float _ditherAnimationSpeed, int _shadowMapSize, float _shadowDistance , float _shadowFadeRange, int _shadowCascades, Vector3 _shadowCascadeSplit, float _renderScale , int _msaaSamples, bool _allowHDR, bool _syncGameCamera) { //Unity 认为光的强度是在伽马空间中定义的,即使我们是在线性空间中工作。 GraphicsSettings.lightsUseLinearIntensity = true; //如果Z相反 阴影的z最远是1 if (SystemInfo.usesReversedZBuffer) { worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } ditherTexture = _ditherTexture; if (_ditherAnimationSpeed > 0f) { ConfigureDitherAnimation(_ditherAnimationSpeed); } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } defaultStack = _defaultStack; shadowMapSize = _shadowMapSize; shadowDistance = _shadowDistance; globalShadowData.y = 1f / _shadowFadeRange; shadowCascades = _shadowCascades; shadowCascadeSplit = _shadowCascadeSplit; renderScale = _renderScale; //设置msaa 如果硬件不支持 则为自动回退为1 QualitySettings.antiAliasing = _msaaSamples; msaaSamples = Mathf.Max(QualitySettings.antiAliasing, 1); allowHDR = _allowHDR; #if UNITY_EDITOR if (SceneView.onSceneGUIDelegate != null) { SceneView.onSceneGUIDelegate -= OnSceneView; } if (_syncGameCamera) { SceneView.onSceneGUIDelegate += OnSceneView; } #endif #if UNITY_EDITOR Lightmapping.SetDelegate(lightmappingLightDelegate); #endif }
public DrawRendererSettings(CullResults cullResults, Camera camera, ShaderPassName shaderPassName) { this._cullResults = cullResults.cullResults; this.shaderPassName = shaderPassName; this.rendererConfiguration = RendererConfiguration.None; this.flags = DrawRendererFlags.EnableInstancing; this.inputFilter = InputFilter.Default(); DrawRendererSettings.InitializeSortSettings(camera, out this.sorting); }
public MyPipeline(bool dynamicBatching, bool instancing) { if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline(bool dynamicBatching, bool instancing) { GraphicsSettings.lightsUseLinearIntensity = true; if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline(bool dynamicBatching, bool instancing) //constructor with configurations { if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } }
public VXGIRenderPipeline(VXGIRenderPipelineAsset asset) { _renderer = new VXGIRenderer(this); _command = new CommandBuffer() { name = "VXGIRenderPipeline" }; _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.opaque }; _drawRendererFlags = DrawRendererFlags.None; if (asset.dynamicBatching) _drawRendererFlags |= DrawRendererFlags.EnableDynamicBatching; Shader.globalRenderPipeline = "VXGI"; Shader.SetGlobalVectorArray("LightColors", new Vector4[64]); Shader.SetGlobalVectorArray("LightPositions", new Vector4[64]); GraphicsSettings.useScriptableRenderPipelineBatching = asset.SRPBatching; }
// // non default constructor // public MyPipeline(bool dynamicBatching, bool instancing) { GraphicsSettings.lightsUseLinearIntensity = true; // even if we are in linear, intensities are gamma by default. if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline(bool dynamicBatching, bool instancing, int shadowMapSize, float shadowDistance) { GraphicsSettings.lightsUseLinearIntensity = true; QualitySettings.shadows = ShadowQuality.All; if (dynamicBatching) { drawflags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawflags |= DrawRendererFlags.EnableInstancing; } this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; }
public MyPipeline(bool dynamicBatching, bool instancing) { GraphicsSettings.lightsUseLinearIntensity = true; if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { //注意这里使用的是OR操作符,flag只有一个,当两个都被打开时,unity更喜欢实现批处理 drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline1(bool dynamicBatching, bool instancing, int shadowMapSize) //constructor with configurations { GraphicsSettings.lightsUseLinearIntensity = true; if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.shadowMapSize = shadowMapSize; }
public MobilePipeline(MobilePipelineAsset pipelineAsset) { _pipelineAsset = pipelineAsset; _cameraBuffer = new CommandBuffer { name = "Custom Render Camera" }; if (_pipelineAsset.DynamicBatching) { _drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (_pipelineAsset.Instancing) { _drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline(bool dynamicBatching, bool instance, int shadowMapSize) { //By default Unity considers the light's intensity to be defined in gamma space, even through we're working in linear space GraphicsSettings.lightsUseLinearIntensity = true; if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instance) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.shadowMapSize = shadowMapSize; }
public MyPipeline(bool dynamicBatching, bool instancing) { if (dynamicBatching) { _drawFlags |= DrawRendererFlags.EnableDynamicBatching; } if (instancing) { _drawFlags |= DrawRendererFlags.EnableInstancing; } // 从gamma color space转到linear color sapce. GraphicsSettings.lightsUseLinearIntensity = true; GraphicsSettings.useScriptableRenderPipelineBatching = true; }
public Scriptable_Render_Pipeline_2_RenderPipeline(bool useDynamicBatching, bool useInstanceing) { Shader errorShader = Shader.Find("Hidden/InternalErrorShader"); errorMaterial = new Material(errorShader) { hideFlags = HideFlags.HideAndDontSave }; if (useDynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (useInstanceing) { drawFlags |= DrawRendererFlags.EnableInstancing; } }
public MyPipeline(bool dynamicBatching, bool instancing, MyPostProcessingStack defaultStack, int shadowMapSize, float shadowDistance, int shadowCascades, Vector3 shadowCascadeSplit, float renderScale, int msaaSamples, bool allowHDR) { // Unity默认光强度是在Gamma空间中定义,即使我们工作在线性空间 // 我们需要指定Unity将光强度理解为线性空间中的值 GraphicsSettings.lightsUseLinearIntensity = true; if (SystemInfo.usesReversedZBuffer) { worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { // 开启动态批处理 drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { // 开启GPU实例化 // 如果同时开启动态批处理,Unity优先使用GPU实例化 drawFlags |= DrawRendererFlags.EnableInstancing; } this.defaultStack = defaultStack; this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; this.shadowCascades = shadowCascades; this.shadowCascadeSplit = shadowCascadeSplit; this.renderScale = renderScale; // QualitySettings会处理平台或者硬件不支持的情况,所以把值赋过去再取回。如果不支持MSAA,取回的值是0 QualitySettings.antiAliasing = msaaSamples; this.msaaSamples = Mathf.Max(QualitySettings.antiAliasing, 1); this.allowHDR = allowHDR; }
public unsafe DrawRendererSettings(Camera camera, ShaderPassName shaderPassName) { this.rendererConfiguration = RendererConfiguration.None; this.flags = DrawRendererFlags.EnableInstancing; this.m_OverrideMaterialInstanceId = 0; this.m_OverrideMaterialPassIdx = 0; fixed(int *ptr = &this.shaderPassNames.FixedElementField) { for (int i = 0; i < DrawRendererSettings.maxShaderPasses; i++) { ptr[(IntPtr)i * 4] = -1; } } fixed(int *ptr2 = &this.shaderPassNames.FixedElementField) { *ptr2 = shaderPassName.nameIndex; } this.rendererConfiguration = RendererConfiguration.None; this.flags = DrawRendererFlags.EnableInstancing; DrawRendererSettings.InitializeSortSettings(camera, out this.sorting); }
public MyPipeline( bool dynamicBatching, bool instancing, Texture2D ditherTexture, float ditherAnimationSpeed, int shadowMapSize, float shadowDistance, float shadowFadeRange, int shadowCascades, Vector3 shadowCascasdeSplit ) { GraphicsSettings.lightsUseLinearIntensity = true; if (SystemInfo.usesReversedZBuffer) { worldToShadowCascadeMatrices[4].m33 = 1f; } if (dynamicBatching) { drawFlags = DrawRendererFlags.EnableDynamicBatching; } if (instancing) { drawFlags |= DrawRendererFlags.EnableInstancing; } this.ditherTexture = ditherTexture; if (ditherAnimationSpeed > 0f && Application.isPlaying) { ConfigureDitherAnimation(ditherAnimationSpeed); } this.shadowMapSize = shadowMapSize; this.shadowDistance = shadowDistance; globalShadowData.y = 1f / shadowFadeRange; this.shadowCascades = shadowCascades; this.shadowCascadeSplit = shadowCascasdeSplit; #if UNITY_EDITOR Lightmapping.SetDelegate(lightmappingLightsDelegate); #endif }