18 #include "../eevee/eevee_lut.h"
56 DRWPass *prepass_velocity_ps_ =
nullptr;
57 DRWPass *prepass_culled_ps_ =
nullptr;
58 DRWPass *prepass_culled_velocity_ps_ =
nullptr;
60 DRWPass *opaque_culled_ps_ =
nullptr;
61 DRWPass *transparent_ps_ =
nullptr;
92 Framebuffer &prepass_fb,
93 Framebuffer &combined_fb,
112 static constexpr
int lut_size_sqr = lut_size * lut_size;
118 #ifdef RUNTIME_LUT_CREATION
120 float(*btdf_ggx_lut)[lut_size_sqr * 2] = (
float(*)[lut_size_sqr * 2])
130 memcpy(layer.data,
blue_noise,
sizeof(layer));
139 layer.data[i][0] = bsdf_ggx_lut[i * 2 + 0];
140 layer.data[i][1] = bsdf_ggx_lut[i * 2 + 1];
154 Layer &layer =
data[3 + layer_id];
156 layer.data[i][0] = btdf_ggx_lut[layer_id][i * 2 + 0];
157 layer.data[i][1] = btdf_ggx_lut[layer_id][i * 2 + 1];
200 switch (pipeline_type) {
typedef float(TangentPoint)[2]
bool GPU_material_flag_get(const GPUMaterial *mat, eGPUMaterialFlag flag)
@ GPU_MATFLAG_TRANSPARENT
void GPU_texture_update_mipmap(GPUTexture *tex, int miplvl, eGPUDataFormat gpu_data_format, const void *pixels)
struct GPUTexture GPUTexture
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Texture
DRWShadingGroup * material_add(::Material *blender_mat, GPUMaterial *gpumat)
DRWShadingGroup * prepass_transparent_add(::Material *blender_mat, GPUMaterial *gpumat)
DRWShadingGroup * prepass_opaque_add(::Material *blender_mat, GPUMaterial *gpumat, bool has_motion)
DRWShadingGroup * prepass_add(::Material *blender_mat, GPUMaterial *gpumat, bool has_motion)
DRWShadingGroup * material_opaque_add(::Material *blender_mat, GPUMaterial *gpumat)
ForwardPipeline(Instance &inst)
void render(const DRWView *view, Framebuffer &prepass_fb, Framebuffer &combined_fb, GPUTexture *depth_tx, GPUTexture *combined_tx)
DRWShadingGroup * material_transparent_add(::Material *blender_mat, GPUMaterial *gpumat)
A running instance of the engine.
PipelineModule(Instance &inst)
UtilityTexture utility_tx
DRWShadingGroup * material_add(::Material *blender_mat, GPUMaterial *gpumat, eMaterialPipeline pipeline_type)
WorldPipeline(Instance &inst)
void sync(GPUMaterial *gpumat)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img GPU_RGBA16F
const float blue_noise[64 *64][4]
const float btdf_split_sum_ggx[16][64 *64 *2]
const float bsdf_split_sum_ggx[64 *64 *2]
const float ltc_mag_ggx[64 *64 *2]
const float ltc_disk_integral[64 *64]
const float ltc_mat_ggx[64 *64 *4]
float * EEVEE_lut_update_ggx_brdf(int lut_size)
float * EEVEE_lut_update_ggx_btdf(int lut_size, int lut_depth)
#define UTIL_DISK_INTEGRAL_COMP
#define UTIL_LTC_MAG_LAYER
#define UTIL_DISK_INTEGRAL_LAYER
#define UTIL_BTDF_LAYER_COUNT
#define UTIL_LTC_MAT_LAYER
#define UTIL_BLUE_NOISE_LAYER
@ MAT_PIPE_DEFERRED_PREPASS_VELOCITY
@ MAT_PIPE_FORWARD_PREPASS_VELOCITY
@ MAT_PIPE_DEFERRED_PREPASS
@ MAT_PIPE_FORWARD_PREPASS