public RendererConfigurationTestBase()
        {
            Renderers = new List <IViewRenderer>();
            Config    = new RendererConfiguration(Renderers);

            AddAllRenderers();
        }
    public void Setup(LightweightForwardRenderer renderer, ref ScriptableRenderContext context,
                      ref CullResults cullResults, ref RenderingData renderingData)
    {
        Init(renderer);

        renderer.Clear();

        renderer.SetupPerObjectLightIndices(ref cullResults, ref renderingData.lightData);
        RenderTextureDescriptor baseDescriptor   = renderer.CreateRTDesc(ref renderingData.cameraData);
        RenderTextureDescriptor shadowDescriptor = baseDescriptor;

        shadowDescriptor.dimension = TextureDimension.Tex2D;

        renderer.EnqueuePass(m_SetupForwardRenderingPass);

        RenderTargetHandle colorHandle = RenderTargetHandle.CameraTarget;
        RenderTargetHandle depthHandle = RenderTargetHandle.CameraTarget;

        var sampleCount = (SampleCount)renderingData.cameraData.msaaSamples;

        m_CreateLightweightRenderTexturesPass.Setup(baseDescriptor, colorHandle, depthHandle, sampleCount);
        renderer.EnqueuePass(m_CreateLightweightRenderTexturesPass);

        Camera camera          = renderingData.cameraData.camera;
        bool   dynamicBatching = renderingData.supportsDynamicBatching;
        RendererConfiguration rendererConfiguration = LightweightForwardRenderer.GetRendererConfiguration(renderingData.lightData.totalAdditionalLightsCount);

        renderer.EnqueuePass(m_SetupLightweightConstants);

        m_RenderOpaqueForwardPass.Setup(baseDescriptor, colorHandle, depthHandle, LightweightForwardRenderer.GetCameraClearFlag(camera), camera.backgroundColor, rendererConfiguration, dynamicBatching);
        renderer.EnqueuePass(m_RenderOpaqueForwardPass);
    }
    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);
        }
Пример #5
0
    public void Setup(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        Init();

        renderer.SetupPerObjectLightIndices(ref renderingData.cullResults, ref renderingData.lightData);
        RenderTextureDescriptor baseDescriptor   = ScriptableRenderer.CreateRenderTextureDescriptor(ref renderingData.cameraData);
        RenderTextureDescriptor shadowDescriptor = baseDescriptor;

        shadowDescriptor.dimension = TextureDimension.Tex2D;

        renderer.EnqueuePass(m_SetupForwardRenderingPass);

        RenderTargetHandle colorHandle = RenderTargetHandle.CameraTarget;
        RenderTargetHandle depthHandle = RenderTargetHandle.CameraTarget;

        var sampleCount = (SampleCount)renderingData.cameraData.msaaSamples;

        m_CreateLightweightRenderTexturesPass.Setup(baseDescriptor, colorHandle, depthHandle, sampleCount);
        renderer.EnqueuePass(m_CreateLightweightRenderTexturesPass);

        Camera camera = renderingData.cameraData.camera;
        RendererConfiguration rendererConfiguration = ScriptableRenderer.GetRendererConfiguration(renderingData.lightData.totalAdditionalLightsCount);

        m_SetupLightweightConstants.Setup(renderer.maxVisibleLocalLights, renderer.perObjectLightIndices);
        renderer.EnqueuePass(m_SetupLightweightConstants);

        m_RenderOpaqueForwardPass.Setup(baseDescriptor, colorHandle, depthHandle, ScriptableRenderer.GetCameraClearFlag(camera), camera.backgroundColor, rendererConfiguration);
        renderer.EnqueuePass(m_RenderOpaqueForwardPass);
    }
 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);
 }
Пример #7
0
 public void Setup(RenderTextureDescriptor baseDesc, RenderTargetHandle colorAttachmentHandle,
                   RenderTargetHandle depthAttachmentHandle, ClearFlag clearFlag, Color clearColor, RendererConfiguration config)
 {
     this.colorAttachmentHandle = colorAttachmentHandle;
     this.depthAttachmentHandle = depthAttachmentHandle;
     this.clearColor            = clearColor;
     this.clearFlag             = clearFlag;
     this.desc           = baseDesc;
     this.rendererConfig = config;
 }
        RendererConfiguration GetRendererSettings(ref LightData lightData)
        {
            RendererConfiguration settings = RendererConfiguration.PerObjectReflectionProbes | RendererConfiguration.PerObjectLightmaps | RendererConfiguration.PerObjectLightProbe;

            if (lightData.totalAdditionalLightsCount > 0)
            {
                settings |= RendererConfiguration.PerObjectLightIndices8;
            }
            return(settings);
        }
 /// <summary>
 /// Configure the pass before execution
 /// </summary>
 /// <param name="baseDescriptor">Current target descriptor</param>
 /// <param name="colorAttachmentHandle">Color attachment to render into</param>
 /// <param name="depthAttachmentHandle">Depth attachment to render into</param>
 /// <param name="configuration">Specific render configuration</param>
 public void Setup(
     RenderTextureDescriptor baseDescriptor,
     RenderTargetHandle colorAttachmentHandle,
     RenderTargetHandle depthAttachmentHandle,
     RendererConfiguration configuration)
 {
     this.colorAttachmentHandle = colorAttachmentHandle;
     this.depthAttachmentHandle = depthAttachmentHandle;
     descriptor            = baseDescriptor;
     rendererConfiguration = configuration;
 }
Пример #10
0
        public EngineApplication(Control control, RendererConfiguration rendererConfig, DeferredShadingConfiguration deferredShadingConfig)
        {
            services = new ServiceContainer();

            windowsControlProvider = new WindowsControlProvider(control, Services);
            resourceManager        = new ResourceManager(Services);
            renderer     = new Renderer(rendererConfig, deferredShadingConfig, Services);
            worldManager = new WorldManager(Services);
            timer        = new Timer(Services);
            inputManager = new InputManager(Services);
        }
Пример #11
0
        public static RendererConfiguration GetRendererConfiguration(int additionalLightsCount)
        {
            RendererConfiguration configuration = RendererConfiguration.PerObjectReflectionProbes | RendererConfiguration.PerObjectLightmaps | RendererConfiguration.PerObjectLightProbe;

            if (additionalLightsCount > 0)
            {
                configuration |= RendererConfiguration.ProvideLightIndices;
            }

            return(configuration);
        }
        /// <summary>
        /// Configure the pass before execution
        /// </summary>
        /// <param name="baseDescriptor">Current target descriptor</param>
        /// <param name="colorAttachmentHandle">Color attachment to render into</param>
        /// <param name="depthAttachmentHandle">Depth attachment to render into</param>
        /// <param name="configuration">Specific render configuration</param>
        public void Setup(
            RenderTextureDescriptor baseDescriptor,
            RenderTargetHandle colorAttachmentHandle,
            RenderTargetHandle depthAttachmentHandle,
            RendererConfiguration configuration,
            SampleCount samples)
        {
            this._ColorAttachmentHandle = colorAttachmentHandle;
            this._DepthAttachmentHandle = depthAttachmentHandle;
            _Descriptor            = baseDescriptor;
            _RendererConfiguration = configuration;

            if ((int)samples > 1)
            {
                baseDescriptor.bindMS      = false;
                baseDescriptor.msaaSamples = (int)samples;
            }

            baseDescriptor.colorFormat     = RenderTextureFormat.ARGBHalf;
            baseDescriptor.depthBufferBits = 0;
            _DescriptorAC = baseDescriptor;

            baseDescriptor.colorFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.RHalf)
                ? RenderTextureFormat.RHalf
                : RenderTextureFormat.ARGBHalf;
            _DescriptorAA = baseDescriptor;

            _AccumColorHandle.Init("_AccumColor");
            _AccumGIHandle.Init("_AccumGI");
            _AccumAlphaHandle.Init("_AccumAlpha");

            _AccumBinding = new RenderTargetBinding(new RenderTargetIdentifier[]
            {
                _AccumColorHandle.Identifier(),
                _AccumGIHandle.Identifier(),
                _AccumAlphaHandle.Identifier(),
            },
                                                    new RenderBufferLoadAction[]
            {
                RenderBufferLoadAction.DontCare,
                RenderBufferLoadAction.DontCare,
                RenderBufferLoadAction.DontCare,
            },
                                                    new RenderBufferStoreAction[]
            {
                RenderBufferStoreAction.Store,
                RenderBufferStoreAction.Store,
                RenderBufferStoreAction.Store,
            },
                                                    _DepthAttachmentHandle.Identifier(),
                                                    RenderBufferLoadAction.Load,
                                                    RenderBufferStoreAction.DontCare);
        }
        private void ForwardPass(List <VisibleLight> visibleLights, FrameRenderingConfiguration frameRenderingConfiguration, ref ScriptableRenderContext context, ref LightData lightData, CameraContext cameraContext, CullResults cullResults)
        {
            SetupShaderConstants(visibleLights, ref context, ref lightData, ref cullResults);

            RendererConfiguration rendererSettings = GetRendererSettings(ref lightData);

            BeginForwardRendering(ref context, frameRenderingConfiguration, cameraContext);
            RenderOpaques(ref context, rendererSettings, cullResults.visibleRenderers, cameraContext);
            AfterOpaque(ref context, frameRenderingConfiguration, cameraContext);
            RenderTransparents(ref context, rendererSettings, cullResults.visibleRenderers, cameraContext);
            AfterTransparent(ref context, frameRenderingConfiguration, cameraContext);
            EndForwardRendering(ref context, frameRenderingConfiguration, cameraContext);
        }
 /// <summary>
 /// Configure the pass before execution
 /// </summary>
 /// <param name="baseDescriptor">Current target descriptor</param>
 /// <param name="colorAttachmentHandle">Color attachment to render into</param>
 /// <param name="depthAttachmentHandle">Depth attachment to render into</param>
 /// <param name="clearFlag">Camera clear flag</param>
 /// <param name="clearColor">Camera clear color</param>
 /// <param name="configuration">Specific render configuration</param>
 public void Setup(
     RenderTextureDescriptor baseDescriptor,
     RenderTargetHandle colorAttachmentHandle,
     RenderTargetHandle depthAttachmentHandle,
     ClearFlag clearFlag,
     Color clearColor,
     RendererConfiguration configuration)
 {
     this.colorAttachmentHandle = colorAttachmentHandle;
     this.depthAttachmentHandle = depthAttachmentHandle;
     this.clearColor            = CoreUtils.ConvertSRGBToActiveColorSpace(clearColor);
     this.clearFlag             = clearFlag;
     descriptor = baseDescriptor;
     this.rendererConfiguration = configuration;
 }
Пример #15
0
        public override void Execute(ref ScriptableRenderContext context, ref CullResults cullResults, ref RenderingData renderingData)
        {
            Camera camera          = renderingData.cameraData.camera;
            bool   dynamicBatching = renderingData.supportsDynamicBatching;

            SetupShaderConstants(ref context, ref renderingData.cameraData, ref renderingData.lightData, ref renderingData.shadowData);
            RendererConfiguration rendererConfiguration = GetRendererConfiguration(renderingData.lightData.totalAdditionalLightsCount);

            if (renderingData.cameraData.isStereoEnabled)
            {
                context.StartMultiEye(camera);
            }

            RenderOpaques(ref context, ref cullResults, ref renderingData.cameraData, rendererConfiguration, dynamicBatching);

            if (renderingData.cameraData.postProcessEnabled &&
                renderingData.cameraData.postProcessLayer.HasOpaqueOnlyEffects(renderer.postProcessRenderContext))
            {
                OpaquePostProcessSubPass(ref context, ref renderingData.cameraData);
            }

            if (depthAttachmentHandle != -1)
            {
                CopyDepthSubPass(ref context, ref renderingData.cameraData);
            }

            if (renderingData.cameraData.requiresOpaqueTexture)
            {
                CopyColorSubpass(ref context, ref renderingData.cameraData);
            }

            RenderTransparents(ref context, ref cullResults, ref renderingData.cameraData, rendererConfiguration, dynamicBatching);

            if (renderingData.cameraData.postProcessEnabled)
            {
                PostProcessPass(ref context, ref renderingData.cameraData);
            }
            else if (!renderingData.cameraData.isOffscreenRender && colorAttachmentHandle != -1)
            {
                FinalBlitPass(ref context, ref renderingData.cameraData);
            }

            if (renderingData.cameraData.isStereoEnabled)
            {
                context.StopMultiEye(camera);
                context.StereoEndRender(camera);
            }
        }
Пример #16
0
        public Engine(int x, int y)
        {
            _renderConfig = new RendererConfiguration
            {
                Width  = x,
                Height = y
            };

            // Manager must be set before Initialize is called
            _graphics = new GraphicsDeviceManager(this)
            {
                PreferredBackBufferWidth  = _renderConfig.Width,
                PreferredBackBufferHeight = _renderConfig.Height
            };
            _graphics.ApplyChanges();
        }
        public DepthStencilBufferArrayHolder(Device device,
                                             RendererConfiguration rendererConfiguration, DeferredShadingConfiguration deferredShadingConfiguration)
        {
            Debug.Assert(device != null && rendererConfiguration != null && deferredShadingConfiguration != null);

            this.device = device;
            this.rendererConfiguration        = rendererConfiguration;
            this.deferredShadingConfiguration = deferredShadingConfiguration;

            depthStencilViewsReadOnly   = new ReadOnlyCollection <DepthStencilView>(depthStencilViews);
            shaderResourceViewsReadOnly = new ReadOnlyCollection <ShaderResourceView>(shaderResourceViews);

            CreateTexture();
            CreateDepthStencilViews();
            CreateShaderResourceViews();
        }
        public DepthStencilBufferArrayHolder(Device device,
            RendererConfiguration rendererConfiguration, DeferredShadingConfiguration deferredShadingConfiguration)
        {
            Debug.Assert(device != null && rendererConfiguration != null && deferredShadingConfiguration != null);

            this.device = device;
            this.rendererConfiguration = rendererConfiguration;
            this.deferredShadingConfiguration = deferredShadingConfiguration;

            depthStencilViewsReadOnly = new ReadOnlyCollection<DepthStencilView>(depthStencilViews);
            shaderResourceViewsReadOnly = new ReadOnlyCollection<ShaderResourceView>(shaderResourceViews);

            CreateTexture();
            CreateDepthStencilViews();
            CreateShaderResourceViews();
        }
Пример #19
0
        private void RenderRendererList(CullResults cullResults,
                                        Camera cam,
                                        ScriptableRenderContext renderContext,
                                        CommandBuffer cmd,
                                        ShaderPassName[] passNames,
                                        RenderQueueRange inRenderQueueRange,
                                        RendererConfiguration rendererConfig = 0,
                                        RenderStateBlock?stateBlock          = null,
                                        Material overrideMaterial            = null)
        {
            //if (!m_CurrentDebugDisplaySettings.renderingDebugSettings.displayOpaqueObjects)
            //    return;

            // This is done here because DrawRenderers API lives outside command buffers so we need to make call this before doing any DrawRenders
            renderContext.ExecuteCommandBuffer(cmd);
            cmd.Clear();

            var drawSettings = new DrawRendererSettings(cam, ClusterShaderPassNames.s_EmptyName)
            {
                rendererConfiguration = rendererConfig,
                sorting = { flags = SortFlags.CommonOpaque }
            };

            for (int i = 0; i < passNames.Length; ++i)
            {
                drawSettings.SetShaderPassName(i, passNames[i]);
            }

            if (overrideMaterial != null)
            {
                drawSettings.SetOverrideMaterial(overrideMaterial, 0);
            }

            var filterSettings = new FilterRenderersSettings(true)
            {
                renderQueueRange = inRenderQueueRange
            };

            if (stateBlock == null)
            {
                renderContext.DrawRenderers(cullResults.visibleRenderers, ref drawSettings, filterSettings);
            }
            else
            {
                renderContext.DrawRenderers(cullResults.visibleRenderers, ref drawSettings, filterSettings, stateBlock.Value);
            }
        }
        public RenderTargetArrayHolder(Device device, RenderTargetDescription description,
            RendererConfiguration rendererConfiguration, DeferredShadingConfiguration deferredShadingConfiguration)
        {
            Debug.Assert(device != null && description != null && rendererConfiguration != null &&
                         deferredShadingConfiguration != null);

            this.device = device;
            this.description = description;
            this.rendererConfiguration = rendererConfiguration;
            this.deferredShadingConfiguration = deferredShadingConfiguration;

            renderTargetViewsReadOnly = new ReadOnlyCollection<RenderTargetView>(renderTargetViews);

            CreateTexture();
            CreateRenderTargetViews();
            CreateShaderResourceView();
        }
Пример #21
0
 public void Setup(
     RenderTextureDescriptor baseDescriptor,
     RenderTargetHandle colorAttachmentHandle,
     RenderTargetHandle depthAttachmentHandle,
     ClearFlag clearFlag,
     Color clearColor,
     RendererConfiguration configuration,
     bool dynamicbatching)
 {
     this.colorAttachmentHandle = colorAttachmentHandle;
     this.depthAttachmentHandle = depthAttachmentHandle;
     this.clearColor            = clearColor;
     this.clearFlag             = clearFlag;
     descriptor = baseDescriptor;
     this.rendererConfiguration = configuration;
     this.dynamicBatching       = dynamicbatching;
 }
        public RenderTargetArrayHolder(Device device, RenderTargetDescription description,
                                       RendererConfiguration rendererConfiguration, DeferredShadingConfiguration deferredShadingConfiguration)
        {
            Debug.Assert(device != null && description != null && rendererConfiguration != null &&
                         deferredShadingConfiguration != null);

            this.device                       = device;
            this.description                  = description;
            this.rendererConfiguration        = rendererConfiguration;
            this.deferredShadingConfiguration = deferredShadingConfiguration;

            renderTargetViewsReadOnly = new ReadOnlyCollection <RenderTargetView>(renderTargetViews);

            CreateTexture();
            CreateRenderTargetViews();
            CreateShaderResourceView();
        }
Пример #23
0
    public void Setup(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        Init();

        Camera camera = renderingData.cameraData.camera;

        RenderTextureDescriptor baseDesc   = CoreUtils.CreateRenderTextureDescriptor(ref renderingData.cameraData);
        RenderTextureDescriptor shadowDesc = baseDesc;

        shadowDesc.dimension = TextureDimension.Tex2D;

        m_DirectionalShadowPass.Setup(DirectionalShadowmap, ref renderingData.shadowData);
        renderer.EnqueuePass(m_DirectionalShadowPass);

        if (renderingData.shadowData.supportSoftShadows)
        {
            if (renderingData.shadowData.shadowType == SoftShadowType.VSM)
            {
                m_BlurPass.Setup(DirectionalShadowmap, BluredDirectionalShadowmap);
                renderer.EnqueuePass(m_BlurPass);
            }
        }

        renderer.EnqueuePass(m_SetupForwardRenderingPass);

        m_DepthOnlyPass.Setup(baseDesc, DepthTexture, 1);
        renderer.EnqueuePass(m_DepthOnlyPass);

        m_ScreenSpaceShadowPass.Setup(baseDesc, ScreenSpaceShadowmap);
        renderer.EnqueuePass(m_ScreenSpaceShadowPass);

        //m_SetupLWDConstants.Setup();
        //renderer.EnqueuePass(m_SetupLWDConstants);

        RenderTargetHandle colorHandle = RenderTargetHandle.CameraTarget;
        RenderTargetHandle depthHandle = RenderTargetHandle.CameraTarget;

        RendererConfiguration rendererConfig = RendererConfiguration.None;

        m_RenderOpaqueForwardPass.Setup(baseDesc, colorHandle, depthHandle, ScriptableRenderer.GetClearFlag(camera), camera.backgroundColor, rendererConfig);
        renderer.EnqueuePass(m_RenderOpaqueForwardPass);

        //m_FinalBlitPass.Setup(baseDesc, colorHandle);
        //renderer.EnqueuePass(m_FinalBlitPass);
    }
        private void RenderTransparents(ref ScriptableRenderContext context, RendererConfiguration config, FilterResults visibleRenderers, CameraContext cameraContext)
        {
            var transparentSettings = new DrawRendererSettings(cameraContext.Camera, m_LitPassName);

            transparentSettings.SetShaderPassName(1, m_UnlitPassName);
            transparentSettings.sorting.flags         = SortFlags.CommonTransparent;
            transparentSettings.rendererConfiguration = config;

            var transparentFilterSettings = new FilterRenderersSettings(true)
            {
                renderQueueRange = RenderQueueRange.transparent
            };

            context.DrawRenderers(visibleRenderers, ref transparentSettings, transparentFilterSettings);

            // Render objects that did not match any shader pass with error shader
            RenderObjectsWithError(ref context, transparentFilterSettings, SortFlags.None, visibleRenderers, cameraContext);
        }
Пример #25
0
        public static RendererConfiguration GetRendererConfiguration(int localLightsCount)
        {
            RendererConfiguration configuration = RendererConfiguration.PerObjectReflectionProbes | RendererConfiguration.PerObjectLightmaps | RendererConfiguration.PerObjectLightProbe;

            if (localLightsCount > 0)
            {
                if (useComputeBufferForPerObjectLightIndices)
                {
                    configuration |= RendererConfiguration.ProvideLightIndices;
                }
                else
                {
                    configuration |= RendererConfiguration.PerObjectLightIndices8;
                }
            }

            return(configuration);
        }
Пример #26
0
        public static RendererConfiguration GetRendererConfiguration(int additionalLightsCount)
        {
            RendererConfiguration configuration = RendererConfiguration.PerObjectReflectionProbes | RendererConfiguration.PerObjectLightmaps | RendererConfiguration.PerObjectLightProbe;

            if (additionalLightsCount > 0)
            {
                if (useStructuredBufferForLights)
                {
                    configuration |= RendererConfiguration.ProvideLightIndices;
                }
                else
                {
                    configuration |= RendererConfiguration.PerObjectLightIndices8;
                }
            }

            return(configuration);
        }
Пример #27
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            RendererConfiguration config = new RendererConfiguration
            {
                ShadowsEnabled = true, BloomEnabled = true, HDREnabled = true, PBREnabled = true
            };

            mViroView = new ViroViewARCore(this, this);
            SetContentView(mViroView);

            var    intent = Intent;
            string key    = intent.GetStringExtra(IntentProductKey);
            ProductApplicationContext context = new ProductApplicationContext();

            mSelectedProduct = context.GetProductDb().GetProductByName(key);

            View.Inflate(this, Resource.Layout.ar_hud, mViroView);
            mHudGroupView            = FindViewById <View>(Resource.Id.main_hud_layout);
            mHudGroupView.Visibility = ViewStates.Gone;
        }
Пример #28
0
        public RayTracer(RendererConfiguration renderConfig)
        {
            this.renderConfig = renderConfig;
            frameBuffer       = new Color[renderConfig.Width * renderConfig.Height];

            for (int i = 0; i < frameBuffer.Length; i++)
            {
                frameBuffer[i] = new Color();
            }

            World = new HitableList(RandomScene());

            camera = new Camera(
                new Vector3(13f, 2f, 3f),
                new Vector3(0f, 0f, 0f),
                new Vector3(0f, 1f, 0f),
                20,
                (float)renderConfig.Width / renderConfig.Height,
                0.1f,
                10f
                );
        }
        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);
        }
        private void RenderOpaques(ref ScriptableRenderContext context, RendererConfiguration settings, FilterResults visibleRenderers, CameraContext cameraContext)
        {
            var camera             = cameraContext.Camera;
            var opaqueDrawSettings = new DrawRendererSettings(camera, m_LitPassName);

            opaqueDrawSettings.SetShaderPassName(1, m_UnlitPassName);
            opaqueDrawSettings.sorting.flags         = SortFlags.CommonOpaque;
            opaqueDrawSettings.rendererConfiguration = settings;

            var opaqueFilterSettings = new FilterRenderersSettings(true)
            {
                renderQueueRange = RenderQueueRange.opaque
            };

            context.DrawRenderers(visibleRenderers, ref opaqueDrawSettings, opaqueFilterSettings);

            // Render objects that did not match any shader pass with error shader
            RenderObjectsWithError(ref context, opaqueFilterSettings, SortFlags.None, visibleRenderers, cameraContext);

            if (camera.clearFlags == CameraClearFlags.Skybox)
            {
                context.DrawSkybox(camera);
            }
        }
Пример #31
0
 public ViewRendererFactory(RendererConfiguration configuration)
 {
     _configuration   = configuration;
     _defaultRenderer = _configuration.Renderers.OfType <JsonViewRenderer>().Single();
 }
Пример #32
0
        public void Setup(ScriptableRenderer renderer, ref RenderingData renderingData)
        {
            Init();

            Camera camera = renderingData.cameraData.camera;

            renderer.SetupPerObjectLightIndices(ref renderingData.cullResults, ref renderingData.lightData);
            RenderTextureDescriptor baseDescriptor   = ScriptableRenderer.CreateRenderTextureDescriptor(ref renderingData.cameraData);
            RenderTextureDescriptor shadowDescriptor = baseDescriptor;
            ClearFlag clearFlag = ScriptableRenderer.GetCameraClearFlag(renderingData.cameraData.camera);

            shadowDescriptor.dimension = TextureDimension.Tex2D;

            bool requiresRenderToTexture = ScriptableRenderer.RequiresIntermediateColorTexture(ref renderingData.cameraData, baseDescriptor);

            RenderTargetHandle colorHandle = RenderTargetHandle.CameraTarget;
            RenderTargetHandle depthHandle = RenderTargetHandle.CameraTarget;

            if (requiresRenderToTexture)
            {
                colorHandle = ColorAttachment;
                depthHandle = DepthAttachment;

                var sampleCount = (SampleCount)renderingData.cameraData.msaaSamples;
                m_CreateLightweightRenderTexturesPass.Setup(baseDescriptor, colorHandle, depthHandle, sampleCount);
                renderer.EnqueuePass(m_CreateLightweightRenderTexturesPass);
            }


            bool mainLightShadows = false;

            if (renderingData.shadowData.supportsMainLightShadows)
            {
                mainLightShadows = m_MainLightShadowCasterPass.Setup(MainLightShadowmap, ref renderingData);
                if (mainLightShadows)
                {
                    renderer.EnqueuePass(m_MainLightShadowCasterPass);
                }
            }



            renderer.EnqueuePass(m_SetupForwardRenderingPass);


            RendererConfiguration rendererConfiguration = ScriptableRenderer.GetRendererConfiguration(renderingData.lightData.additionalLightsCount);

            m_SetupLightweightConstants.Setup(renderer.maxVisibleAdditionalLights, renderer.perObjectLightIndices);
            renderer.EnqueuePass(m_SetupLightweightConstants);
            // GameView at LGRP
            if (!renderingData.cameraData.isSceneViewCamera)
            {
                LookingGlassRenderingInfo       info = renderingData.cameraData.lookingGlassInfo;
                LookingGlassDeviceConfig        config;
                LookingGlassRenderInfoPerCamera perCameraInfo;

                var cameraDeviceInfo = camera.GetComponent <LookingGlassCameraInfo>();
                if (cameraDeviceInfo != null)
                {
                    config        = cameraDeviceInfo.config;
                    perCameraInfo = cameraDeviceInfo.renderInfo;
                }
                else
                {
                    config = new LookingGlassDeviceConfig();
                    config.SetUpDefault();
                    perCameraInfo = new LookingGlassRenderInfoPerCamera();
                    perCameraInfo.SetupDefault();
                }

                int depthValue = (info.renderMethod == LookingGlassRenderingInfo.RenderingMethod.RenderMultiPass) ? 0 : 32;
                if (tileTexture != null && oldLookingRenderInfo.HaveToRemakeRenderTexture(ref info))
                {
                    tileTexture.Release();
                    tileTexture = null;
                    Debug.Log("Recreate RenderTexture");
                }

                if (tileTexture == null || !tileTexture)
                {
                    tileTexture      = new RenderTexture(info.renderTargetW, info.renderTargetH, depthValue);
                    tileTexture.name = "LookingGlassQuiltTexture";
                }

                // tile texture draw( changed by method)
                switch (info.renderMethod)
                {
                case LookingGlassRenderingInfo.RenderingMethod.RenderMultiPass:
                    m_LookingMultiTexturePass.Setup(tileTexture, ref info, ref perCameraInfo);
                    renderer.EnqueuePass(m_LookingMultiTexturePass);
                    break;

                case LookingGlassRenderingInfo.RenderingMethod.RenderSinglePassInstancing:
                    m_LookingInstancingRenderPass.Setup(tileTexture, ref info, ref perCameraInfo);
                    renderer.EnqueuePass(m_LookingInstancingRenderPass);
                    break;
                }

                m_LookingFinalPass.SetUp(colorHandle, tileTexture, ref info, ref config);
                renderer.EnqueuePass(m_LookingFinalPass);
                // info setup
                oldLookingRenderInfo = info;
            }
            // SceneView
            else
            {
                m_RenderOpaqueForwardPass.Setup(baseDescriptor, colorHandle, depthHandle, clearFlag, camera.backgroundColor, rendererConfiguration);
                renderer.EnqueuePass(m_RenderOpaqueForwardPass);
                if (camera.clearFlags == CameraClearFlags.Skybox && RenderSettings.skybox != null)
                {
                    m_DrawSkyboxPass.Setup(colorHandle, depthHandle);
                    renderer.EnqueuePass(m_DrawSkyboxPass);
                }
                m_RenderTransparentForwardPass.Setup(baseDescriptor, colorHandle, depthHandle, rendererConfiguration);
                renderer.EnqueuePass(m_RenderTransparentForwardPass);
                if (!renderingData.cameraData.isOffscreenRender && colorHandle != RenderTargetHandle.CameraTarget)
                {
                    m_FinalBlitPass.Setup(baseDescriptor, colorHandle);
                    renderer.EnqueuePass(m_FinalBlitPass);
                }
            }

#if UNITY_EDITOR
            if (renderingData.cameraData.isSceneViewCamera)
            {
                m_SceneViewDepthCopyPass.Setup(DepthTexture);
                renderer.EnqueuePass(m_SceneViewDepthCopyPass);
            }
#endif
        }