This patch moves all the functionality previously in SceneRenderLayer to SceneLayer. If we want to rename some of these structs now would be a good time to do it, before they are in SceneLayer. Everything should be working, though I will test things further tomorrow. Once this is committed depsgraph can get rid of the workaround added in rna_Main_meshes_new_from_object and finish whatever this patch was preventing from being finished. This patch also adds a few placeholders for the overrides (samples, ...). These are obviously not working, so some unittests that rely on 'lay', and 'zmask' will fail. This patch does not addressed the change of moving samples to ViewRender (I have this as a separate patch and needs some separate discussion). Following next is the individual note of the individual parts that were committed. Note 1: It is up to Cycles to still get rid of exclude_layer internally. Note 2: Cycles still need to handle its own doversion for the use_layer_samples cases and (1) Remove the override as it is (2) Add a new override (scene.cycles.samples) if scene.cycles.use_layer_samples != IGNORE Respecting the expected behaviour when scene.cycles.use_layer_samples == BOUNDED. Note 3: Cycles still need to implement the per-object holdout (similar to how we do shadow catcher). Note 4: There are parts of the old (Blender Internal) rendering pipeline that is still using lay, e.g., in shi->lay. Honestly it will be easier to purge the entire Blender Internal code away instead of taking things from it bit by bit. Reviewers: sergey, campbellbarton, brecht Differential Revision: https://developer.blender.org/D2919
106 lines
3.1 KiB
C
106 lines
3.1 KiB
C
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
#ifndef __RENDERCORE_H__
|
|
#define __RENDERCORE_H__
|
|
|
|
/** \file blender/render/intern/include/rendercore.h
|
|
* \ingroup render
|
|
*/
|
|
|
|
#include "render_types.h"
|
|
|
|
#include "RE_engine.h"
|
|
|
|
#include "DNA_node_types.h"
|
|
|
|
#include "NOD_composite.h"
|
|
|
|
struct ShadeInput;
|
|
struct ShadeResult;
|
|
struct World;
|
|
struct RenderPart;
|
|
struct RenderLayer;
|
|
struct RayObject;
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
typedef struct PixStr {
|
|
struct PixStr *next;
|
|
int obi, facenr, z, maskz;
|
|
unsigned short mask;
|
|
short shadfac;
|
|
} PixStr;
|
|
|
|
typedef struct PixStrMain {
|
|
struct PixStrMain *next, *prev;
|
|
struct PixStr *ps;
|
|
int counter;
|
|
} PixStrMain;
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
|
void calc_view_vector(float view[3], float x, float y);
|
|
float mistfactor(float zcor, const float co[3]); /* dist and height, return alpha */
|
|
|
|
void renderspothalo(struct ShadeInput *shi, float col[4], float alpha);
|
|
void add_halo_flare(Render *re);
|
|
|
|
void calc_renderco_zbuf(float co[3], const float view[3], int z);
|
|
void calc_renderco_ortho(float co[3], float x, float y, int z);
|
|
|
|
int count_mask(unsigned short mask);
|
|
|
|
void zbufshade_tile(struct RenderPart *pa);
|
|
void zbufshadeDA_tile(struct RenderPart *pa);
|
|
|
|
void zbufshade_sss_tile(struct RenderPart *pa);
|
|
|
|
int get_sample_layers(struct RenderPart *pa, struct RenderLayer *rl, struct RenderLayer **rlpp);
|
|
|
|
void render_internal_update_passes(struct RenderEngine *engine, struct Scene *scene, struct SceneLayer *scene_layer);
|
|
|
|
|
|
/* -------- ray.c ------- */
|
|
|
|
struct RayObject *RE_rayobject_create(int type, int size, int octree_resolution);
|
|
|
|
extern void freeraytree(Render *re);
|
|
extern void makeraytree(Render *re);
|
|
struct RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi);
|
|
|
|
extern void ray_shadow(ShadeInput *shi, LampRen *lar, float shadfac[4]);
|
|
extern void ray_trace(ShadeInput *shi, ShadeResult *);
|
|
extern void ray_ao(ShadeInput *shi, float ao[3], float env[3]);
|
|
extern void init_jitter_plane(LampRen *lar);
|
|
extern void init_ao_sphere(Render *re, struct World *wrld);
|
|
extern void init_render_qmcsampler(Render *re);
|
|
extern void free_render_qmcsampler(Render *re);
|
|
|
|
#endif /* __RENDERCORE_H__ */
|