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; }
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); }
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 }