コード例 #1
0
        private void OnEnable()
        {
            script = (StylizedGrassRenderer)target;
#if URP
            if (script.bendRenderer == null)
            {
                script.bendRenderer = PipelineUtilities.GetRenderer(DrawGrassBenders.AssetName);
                PipelineUtilities.ValidatePipelineRenderers(script.bendRenderer);

                script.OnEnable();
                script.OnDisable();
            }
#endif

            renderExtends     = serializedObject.FindProperty("renderExtends");
            followSceneCamera = serializedObject.FindProperty("followSceneCamera");
            followTarget      = serializedObject.FindProperty("followTarget");
            renderLayer       = serializedObject.FindProperty("renderLayer");
            maskEdges         = serializedObject.FindProperty("maskEdges");
            colorMap          = serializedObject.FindProperty("colorMap");
            listenToWindZone  = serializedObject.FindProperty("listenToWindZone");
            windZone          = serializedObject.FindProperty("windZone");

            layerStr = UnityEditorInternal.InternalEditorUtility.layers;
        }
コード例 #2
0
        private Camera CreateCamera()
        {
            Camera cam = new GameObject().AddComponent <Camera>();

            cam.gameObject.name            = "GrassBendCamera " + GetInstanceID();
            cam.transform.localEulerAngles = new Vector3(90f, 0f, 0f);
            cam.gameObject.hideFlags       = HideFlags.HideAndDontSave;
            if (actualFollowTarget)
            {
                cam.gameObject.transform.position = new Vector3(actualFollowTarget.transform.position.x, actualFollowTarget.transform.position.y + renderExtends, actualFollowTarget.transform.position.z);
            }

            cam.orthographic = true;
            cam.depth        = -100f;
            cam.allowHDR     = false;
            cam.allowMSAA    = false;
            cam.clearFlags   = CameraClearFlags.SolidColor;
            cam.cullingMask  = 0;
            //Neutral bend direction and zero strength/mask
            cam.backgroundColor = neutralVector;

            cam.useOcclusionCulling    = false;
            cam.allowHDR               = true;
            cam.allowMSAA              = false;
            cam.forceIntoRenderTexture = true;

#if URP
            UniversalAdditionalCameraData camData = cam.gameObject.AddComponent <UniversalAdditionalCameraData>();
            camData.renderShadows        = false;
            camData.renderPostProcessing = false;
            camData.antialiasing         = AntialiasingMode.None;
            camData.requiresColorOption  = CameraOverrideOption.Off;
            camData.requiresDepthOption  = CameraOverrideOption.Off;
            camData.requiresColorTexture = false;
            camData.requiresDepthTexture = false;

            if (UniversalRenderPipeline.asset)
            {
#if UNITY_EDITOR
                //Only runs in editor, but will be referenced in instance from there on
                if (!bendRenderer)
                {
                    bendRenderer = PipelineUtilities.GetRenderer((DrawGrassBenders.AssetName));
                }
                PipelineUtilities.ValidatePipelineRenderers(bendRenderer);
#endif

                PipelineUtilities.AssignRendererToCamera(camData, bendRenderer);
            }
            else
            {
                Debug.LogError("[StylizedGrassRenderer] No Universal Render Pipeline is currently active.");
            }
#endif

            return(cam);
        }
コード例 #3
0
        public static void SetupRenderer(GrassColorMapRenderer renderer)
        {
            if (!renderer.renderCam)
            {
                renderer.renderCam = new GameObject().AddComponent <Camera>();
            }

            renderer.renderCam.name    = "Grass color map renderCam";
            renderer.renderCam.enabled = false;

            //Camera set up
            renderer.renderCam.orthographic     = true;
            renderer.renderCam.orthographicSize = (renderer.colorMap.bounds.size.x / 2);
            renderer.renderCam.farClipPlane     = renderer.colorMap.bounds.size.y + CLIP_PADDING;
            renderer.renderCam.clearFlags       = CameraClearFlags.Color;
            renderer.renderCam.backgroundColor  = Color.red;
            renderer.renderCam.cullingMask      = renderer.useLayers ? (int)renderer.renderLayer : -1;

            //Position cam in given center of terrain(s)
            renderer.renderCam.transform.position = new Vector3(
                renderer.colorMap.bounds.center.x,
                renderer.colorMap.bounds.center.y + renderer.colorMap.bounds.extents.y + CLIP_PADDING + (renderer.useLayers ? 0f : HEIGHT_OFFSET),
                renderer.colorMap.bounds.center.z
                );

            renderer.renderCam.transform.localEulerAngles = new Vector3(90, 0, 0);

#if URP
            UniversalAdditionalCameraData camData = renderer.renderCam.gameObject.AddComponent <UniversalAdditionalCameraData>();
            camData.renderShadows        = false;
            camData.renderPostProcessing = false;
            camData.antialiasing         = AntialiasingMode.None;
            camData.requiresColorOption  = CameraOverrideOption.Off;
            camData.requiresDepthOption  = CameraOverrideOption.Off;
            camData.requiresColorTexture = false;
            camData.requiresDepthTexture = false;

            if (UniversalRenderPipeline.asset)
            {
#if UNITY_EDITOR
                //Only runs in editor, but will be referenced in instance from there on
                if (!renderer.renderData)
                {
                    renderer.renderData = PipelineUtilities.GetRenderer(("ColormapRenderer"));
                }
#endif
                PipelineUtilities.ValidatePipelineRenderers(renderer.renderData);
                PipelineUtilities.AssignRendererToCamera(camData, renderer.renderData);
            }
            else
            {
                Debug.LogError("[StylizedGrassRenderer] No Universal Render Pipeline is currently active.");
            }
#endif
        }