Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/render/session.h')
-rw-r--r--intern/cycles/render/session.h229
1 files changed, 0 insertions, 229 deletions
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
deleted file mode 100644
index 46c964bc98c..00000000000
--- a/intern/cycles/render/session.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __SESSION_H__
-#define __SESSION_H__
-
-#include "device/device.h"
-#include "integrator/render_scheduler.h"
-#include "render/buffers.h"
-#include "render/shader.h"
-#include "render/stats.h"
-#include "render/tile.h"
-
-#include "util/util_progress.h"
-#include "util/util_stats.h"
-#include "util/util_thread.h"
-#include "util/util_unique_ptr.h"
-#include "util/util_vector.h"
-
-CCL_NAMESPACE_BEGIN
-
-class BufferParams;
-class Device;
-class DeviceScene;
-class DisplayDriver;
-class OutputDriver;
-class PathTrace;
-class Progress;
-class RenderBuffers;
-class Scene;
-class SceneParams;
-
-/* Session Parameters */
-
-class SessionParams {
- public:
- DeviceInfo device;
-
- bool headless;
- bool background;
-
- bool experimental;
- int samples;
- int pixel_size;
- int threads;
-
- /* Limit in seconds for how long path tracing is allowed to happen.
- * Zero means no limit is applied. */
- double time_limit;
-
- bool use_profiling;
-
- bool use_auto_tile;
- int tile_size;
-
- ShadingSystem shadingsystem;
-
- SessionParams()
- {
- headless = false;
- background = false;
-
- experimental = false;
- samples = 1024;
- pixel_size = 1;
- threads = 0;
- time_limit = 0.0;
-
- use_profiling = false;
-
- use_auto_tile = true;
- tile_size = 2048;
-
- shadingsystem = SHADINGSYSTEM_SVM;
- }
-
- bool modified(const SessionParams &params) const
- {
- /* Modified means we have to recreate the session, any parameter changes
- * that can be handled by an existing Session are omitted. */
- return !(device == params.device && headless == params.headless &&
- background == params.background && experimental == params.experimental &&
- pixel_size == params.pixel_size && threads == params.threads &&
- use_profiling == params.use_profiling && shadingsystem == params.shadingsystem &&
- use_auto_tile == params.use_auto_tile && tile_size == params.tile_size);
- }
-};
-
-/* Session
- *
- * This is the class that contains the session thread, running the render
- * control loop and dispatching tasks. */
-
-class Session {
- public:
- Device *device;
- Scene *scene;
- Progress progress;
- SessionParams params;
- Stats stats;
- Profiler profiler;
-
- /* Callback is invoked by tile manager whenever on-dist tiles storage file is closed after
- * writing. Allows an engine integration to keep track of those files without worry about
- * transferring the information when it needs to re-create session during rendering. */
- function<void(string_view)> full_buffer_written_cb;
-
- explicit Session(const SessionParams &params, const SceneParams &scene_params);
- ~Session();
-
- void start();
-
- /* When quick cancel is requested path tracing is cancels as soon as possible, without waiting
- * for the buffer to be uniformly sampled. */
- void cancel(bool quick = false);
-
- void draw();
- void wait();
-
- bool ready_to_reset();
- void reset(const SessionParams &session_params, const BufferParams &buffer_params);
-
- void set_pause(bool pause);
-
- void set_samples(int samples);
- void set_time_limit(double time_limit);
-
- void set_output_driver(unique_ptr<OutputDriver> driver);
- void set_display_driver(unique_ptr<DisplayDriver> driver);
-
- double get_estimated_remaining_time() const;
-
- void device_free();
-
- /* Returns the rendering progress or 0 if no progress can be determined
- * (for example, when rendering with unlimited samples). */
- float get_progress();
-
- void collect_statistics(RenderStats *stats);
-
- /* --------------------------------------------------------------------
- * Full-frame on-disk storage.
- */
-
- /* Read given full-frame file from disk, perform needed processing and write it to the software
- * via the write callback. */
- void process_full_buffer_from_disk(string_view filename);
-
- protected:
- struct DelayedReset {
- thread_mutex mutex;
- bool do_reset;
- SessionParams session_params;
- BufferParams buffer_params;
- } delayed_reset_;
-
- void run();
-
- /* Update for the new iteration of the main loop in run implementation (run_cpu and run_gpu).
- *
- * Will take care of the following things:
- * - Delayed reset
- * - Scene update
- * - Tile manager advance
- * - Render scheduler work request
- *
- * The updates are done in a proper order with proper locking around them, which guarantees
- * that the device side of scene and render buffers are always in a consistent state.
- *
- * Returns render work which is to be rendered next. */
- RenderWork run_update_for_next_iteration();
-
- /* Wait for rendering to be unpaused, or for new tiles for render to arrive.
- * Returns true if new main render loop iteration is required after this function call.
- *
- * The `render_work` is the work which was scheduled by the render scheduler right before
- * checking the pause. */
- bool run_wait_for_work(const RenderWork &render_work);
-
- void run_main_render_loop();
-
- bool update_scene(int width, int height);
-
- void update_status_time(bool show_pause = false, bool show_done = false);
-
- void do_delayed_reset();
-
- int2 get_effective_tile_size() const;
-
- thread *session_thread_;
-
- bool pause_ = false;
- bool cancel_ = false;
- bool new_work_added_ = false;
-
- thread_condition_variable pause_cond_;
- thread_mutex pause_mutex_;
- thread_mutex tile_mutex_;
- thread_mutex buffers_mutex_;
-
- TileManager tile_manager_;
- BufferParams buffer_params_;
-
- /* Render scheduler is used to get work to be rendered with the current big tile. */
- RenderScheduler render_scheduler_;
-
- /* Path tracer object.
- *
- * Is a single full-frame path tracer for interactive viewport rendering.
- * A path tracer for the current big-tile for an offline rendering. */
- unique_ptr<PathTrace> path_trace_;
-};
-
-CCL_NAMESPACE_END
-
-#endif /* __SESSION_H__ */