UI: Console Text Operations #108626

Manually merged
Campbell Barton merged 13 commits from Harley/blender:ConsoleSelect into main 2023-09-22 05:42:35 +02:00
156 changed files with 6715 additions and 4098 deletions
Showing only changes of commit 85512309fd - Show all commits

View File

@ -184,6 +184,12 @@ void AnimateableProperty::read(float position, float* out)
t = 0;
}
if(position < 0)
{
position = 0;
t = 0;
}
if(t == 0)
{
std::memcpy(out, getBuffer() + int(std::floor(position)) * m_count, m_count * sizeof(float));

View File

@ -661,8 +661,18 @@ static ShaderNode *add_node(Scene *scene,
else if (b_node.is_a(&RNA_ShaderNodeBsdfTransparent)) {
node = graph->create_node<TransparentBsdfNode>();
}
else if (b_node.is_a(&RNA_ShaderNodeBsdfVelvet)) {
node = graph->create_node<VelvetBsdfNode>();
else if (b_node.is_a(&RNA_ShaderNodeBsdfSheen)) {
BL::ShaderNodeBsdfSheen b_sheen_node(b_node);
SheenBsdfNode *sheen = graph->create_node<SheenBsdfNode>();
switch (b_sheen_node.distribution()) {
case BL::ShaderNodeBsdfSheen::distribution_ASHIKHMIN:
sheen->set_distribution(CLOSURE_BSDF_ASHIKHMIN_VELVET_ID);
break;
case BL::ShaderNodeBsdfSheen::distribution_MICROFIBER:
sheen->set_distribution(CLOSURE_BSDF_SHEEN_ID);
break;
}
node = sheen;
}
else if (b_node.is_a(&RNA_ShaderNodeEmission)) {
node = graph->create_node<EmissionNode>();

View File

@ -126,6 +126,7 @@ set(SRC_KERNEL_CLOSURE_HEADERS
closure/bsdf_microfacet.h
closure/bsdf_oren_nayar.h
closure/bsdf_phong_ramp.h
closure/bsdf_sheen.h
closure/bsdf_toon.h
closure/bsdf_transparent.h
closure/bsdf_util.h

View File

@ -11,6 +11,7 @@
#include "kernel/closure/bsdf_phong_ramp.h"
#include "kernel/closure/bsdf_diffuse_ramp.h"
#include "kernel/closure/bsdf_microfacet.h"
#include "kernel/closure/bsdf_sheen.h"
#include "kernel/closure/bsdf_transparent.h"
#include "kernel/closure/bsdf_ashikhmin_shirley.h"
#include "kernel/closure/bsdf_toon.h"
@ -214,6 +215,11 @@ ccl_device_inline int bsdf_sample(KernelGlobals kg,
*sampled_roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_SHEEN_ID:
label = bsdf_sheen_sample(sc, Ng, sd->wi, rand_xy, eval, wo, pdf);
*sampled_roughness = one_float2();
*eta = 1.0f;
break;
#endif
default:
label = LABEL_NONE;
@ -349,6 +355,11 @@ ccl_device_inline void bsdf_roughness_eta(const KernelGlobals kg,
*roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_SHEEN_ID:
alpha = ((ccl_private SheenBsdf *)sc)->roughness;
*roughness = make_float2(alpha, alpha);
*eta = 1.0f;
break;
#endif
default:
*roughness = one_float2();
@ -429,6 +440,7 @@ ccl_device_inline int bsdf_label(const KernelGlobals kg,
label = LABEL_REFLECT | LABEL_DIFFUSE;
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
case CLOSURE_BSDF_SHEEN_ID:
label = LABEL_REFLECT | LABEL_DIFFUSE;
break;
#endif
@ -525,6 +537,9 @@ ccl_device_inline
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
eval = bsdf_principled_sheen_eval(sc, sd->wi, wo, pdf);
break;
case CLOSURE_BSDF_SHEEN_ID:
eval = bsdf_sheen_eval(sc, sd->wi, wo, pdf);
break;
#endif
default:
break;

View File

@ -0,0 +1,104 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
#pragma once
/* Shading model by Tizian Zeltner, Brent Burley, Matt Jen-Yuan Chiang:
* "Practical Multiple-Scattering Sheen Using Linearly Transformed Cosines" (2022)
* https://tizianzeltner.com/projects/Zeltner2022Practical/
*/
#include "kernel/closure/bsdf_util.h"
CCL_NAMESPACE_BEGIN
typedef struct SheenBsdf {
SHADER_CLOSURE_BASE;
float roughness;
float transformA, transformB;
float3 T, B;
} SheenBsdf;
static_assert(sizeof(ShaderClosure) >= sizeof(SheenBsdf), "SheenBsdf is too large!");
ccl_device int bsdf_sheen_setup(KernelGlobals kg,
ccl_private const ShaderData *sd,
ccl_private SheenBsdf *bsdf)
{
bsdf->type = CLOSURE_BSDF_SHEEN_ID;
bsdf->roughness = clamp(bsdf->roughness, 1e-3f, 1.0f);
make_orthonormals_tangent(bsdf->N, sd->wi, &bsdf->T, &bsdf->B);
float cosNI = dot(bsdf->N, sd->wi);
int offset = kernel_data.tables.sheen_ltc;
bsdf->transformA = lookup_table_read_2D(kg, cosNI, bsdf->roughness, offset, 32, 32);
bsdf->transformB = lookup_table_read_2D(kg, cosNI, bsdf->roughness, offset + 32 * 32, 32, 32);
float albedo = lookup_table_read_2D(kg, cosNI, bsdf->roughness, offset + 2 * 32 * 32, 32, 32);
bsdf->weight *= albedo;
bsdf->sample_weight *= albedo;
return SD_BSDF | SD_BSDF_HAS_EVAL;
}
ccl_device Spectrum bsdf_sheen_eval(ccl_private const ShaderClosure *sc,
const float3 wi,
const float3 wo,
ccl_private float *pdf)
{
ccl_private const SheenBsdf *bsdf = (ccl_private const SheenBsdf *)sc;
const float3 N = bsdf->N, T = bsdf->T, B = bsdf->B;
float a = bsdf->transformA, b = bsdf->transformB;
if (dot(N, wo) <= 0.0f) {
*pdf = 0.0f;
return zero_spectrum();
}
float3 localO = make_float3(dot(T, wo), dot(B, wo), dot(N, wo));
if (localO.z <= 0.0f) {
*pdf = 0.0f;
return zero_spectrum();
}
float lenSqr = sqr(a * localO.x + b * localO.z) + sqr(a * localO.y) + sqr(localO.z);
float val = M_1_PI_F * localO.z * sqr(a / lenSqr);
*pdf = val;
return make_spectrum(val);
}
ccl_device int bsdf_sheen_sample(ccl_private const ShaderClosure *sc,
float3 Ng,
float3 wi,
float2 rand,
ccl_private Spectrum *eval,
ccl_private float3 *wo,
ccl_private float *pdf)
{
ccl_private const SheenBsdf *bsdf = (ccl_private const SheenBsdf *)sc;
const float3 N = bsdf->N, T = bsdf->T, B = bsdf->B;
float a = bsdf->transformA, b = bsdf->transformB;
float2 disk = concentric_sample_disk(rand);
float diskZ = safe_sqrtf(1.0f - dot(disk, disk));
float3 localO = normalize(make_float3((disk.x - diskZ * b) / a, disk.y / a, diskZ));
*wo = localO.x * T + localO.y * B + localO.z * N;
if (dot(Ng, *wo) <= 0) {
*eval = zero_spectrum();
*pdf = 0.0f;
return LABEL_REFLECT | LABEL_DIFFUSE;
}
float lenSqr = sqr(a * localO.x + b * localO.z) + sqr(a * localO.y) + sqr(localO.z);
float val = M_1_PI_F * localO.z * sqr(a / lenSqr);
*pdf = val;
*eval = make_spectrum(val);
return LABEL_REFLECT | LABEL_DIFFUSE;
}
CCL_NAMESPACE_END

View File

@ -14,6 +14,7 @@
#include "kernel/closure/bsdf_diffuse.h"
#include "kernel/closure/bsdf_microfacet.h"
#include "kernel/closure/bsdf_oren_nayar.h"
#include "kernel/closure/bsdf_sheen.h"
#include "kernel/closure/bsdf_transparent.h"
#include "kernel/closure/bsdf_ashikhmin_shirley.h"
#include "kernel/closure/bsdf_toon.h"
@ -555,6 +556,30 @@ ccl_device void osl_closure_ashikhmin_velvet_setup(
sd->flag |= bsdf_ashikhmin_velvet_setup(bsdf);
}
/* Sheen */
ccl_device void osl_closure_sheen_setup(KernelGlobals kg,
ccl_private ShaderData *sd,
uint32_t path_flag,
float3 weight,
ccl_private const SheenClosure *closure)
{
if (osl_closure_skip(kg, sd, path_flag, LABEL_DIFFUSE)) {
return;
}
ccl_private SheenBsdf *bsdf = (ccl_private SheenBsdf *)bsdf_alloc(
sd, sizeof(SheenBsdf), rgb_to_spectrum(weight));
if (!bsdf) {
return;
}
bsdf->N = ensure_valid_specular_reflection(sd->Ng, sd->wi, closure->N);
bsdf->roughness = closure->roughness;
sd->flag |= bsdf_sheen_setup(kg, sd, bsdf);
}
ccl_device void osl_closure_diffuse_toon_setup(KernelGlobals kg,
ccl_private ShaderData *sd,
uint32_t path_flag,

View File

@ -115,6 +115,11 @@ OSL_CLOSURE_STRUCT_BEGIN(AshikhminVelvet, ashikhmin_velvet)
OSL_CLOSURE_STRUCT_MEMBER(AshikhminVelvet, FLOAT, float, sigma, NULL)
OSL_CLOSURE_STRUCT_END(AshikhminVelvet, ashikhmin_velvet)
OSL_CLOSURE_STRUCT_BEGIN(Sheen, sheen)
OSL_CLOSURE_STRUCT_MEMBER(Sheen, VECTOR, packed_float3, N, NULL)
OSL_CLOSURE_STRUCT_MEMBER(Sheen, FLOAT, float, roughness, NULL)
OSL_CLOSURE_STRUCT_END(Sheen, sheen)
OSL_CLOSURE_STRUCT_BEGIN(DiffuseToon, diffuse_toon)
OSL_CLOSURE_STRUCT_MEMBER(DiffuseToon, VECTOR, packed_float3, N, NULL)
OSL_CLOSURE_STRUCT_MEMBER(DiffuseToon, FLOAT, float, size, NULL)

View File

@ -78,6 +78,7 @@ set(SRC_OSL
node_separate_hsv.osl
node_separate_xyz.osl
node_set_normal.osl
node_sheen_bsdf.osl
node_sky_texture.osl
node_subsurface_scattering.osl
node_tangent.osl
@ -91,7 +92,6 @@ set(SRC_OSL
node_vector_map_range.osl
node_vector_rotate.osl
node_vector_transform.osl
node_velvet_bsdf.osl
node_vertex_color.osl
node_voronoi_texture.osl
node_voxel_texture.osl

View File

@ -0,0 +1,19 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
#include "node_fresnel.h"
#include "stdcycles.h"
shader node_sheen_bsdf(color Color = 0.8,
string distribution = "microfiber",
float Roughness = 0.0,
normal Normal = N,
output closure color BSDF = 0)
{
float roughness = clamp(Roughness, 0.0, 1.0);
if (distribution == "ashikhmin")
BSDF = Color * ashikhmin_velvet(Normal, roughness);
else if (distribution == "microfiber")
BSDF = Color * sheen(Normal, roughness);
}

View File

@ -1,15 +0,0 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
#include "node_fresnel.h"
#include "stdcycles.h"
shader node_velvet_bsdf(color Color = 0.8,
float Sigma = 0.0,
normal Normal = N,
output closure color BSDF = 0)
{
float sigma = clamp(Sigma, 0.0, 1.0);
BSDF = Color * ashikhmin_velvet(Normal, sigma);
}

View File

@ -23,6 +23,7 @@ closure color phong_ramp(normal N, float exponent, color colors[8]) BUILTIN;
closure color diffuse_toon(normal N, float size, float smooth) BUILTIN;
closure color glossy_toon(normal N, float size, float smooth) BUILTIN;
closure color ashikhmin_velvet(normal N, float sigma) BUILTIN;
closure color sheen(normal N, float roughness) BUILTIN;
closure color ambient_occlusion() BUILTIN;
closure color principled_diffuse(normal N, float roughness) BUILTIN;
closure color principled_sheen(normal N) BUILTIN;

View File

@ -32,6 +32,7 @@ template<uint node_feature_mask, ShaderType shader_type>
ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node,
uint32_t path_flag,
int offset)
@ -147,7 +148,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
__uint_as_float(data_subsurface_color.z),
__uint_as_float(data_subsurface_color.w));
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
#ifdef __SUBSURFACE__
float3 mixed_ss_base_color = subsurface_color * subsurface +
@ -353,7 +354,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
break;
}
case CLOSURE_BSDF_DIFFUSE_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private OrenNayarBsdf *bsdf = (ccl_private OrenNayarBsdf *)bsdf_alloc(
sd, sizeof(OrenNayarBsdf), weight);
@ -373,7 +374,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
break;
}
case CLOSURE_BSDF_TRANSLUCENT_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private DiffuseBsdf *bsdf = (ccl_private DiffuseBsdf *)bsdf_alloc(
sd, sizeof(DiffuseBsdf), weight);
@ -384,7 +385,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
break;
}
case CLOSURE_BSDF_TRANSPARENT_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
bsdf_transparent_setup(sd, weight, path_flag);
break;
}
@ -396,7 +397,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
if (!kernel_data.integrator.caustics_reflective && (path_flag & PATH_RAY_DIFFUSE))
break;
#endif
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private MicrofacetBsdf *bsdf = (ccl_private MicrofacetBsdf *)bsdf_alloc(
sd, sizeof(MicrofacetBsdf), weight);
@ -459,7 +460,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
if (!kernel_data.integrator.caustics_refractive && (path_flag & PATH_RAY_DIFFUSE))
break;
#endif
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private MicrofacetBsdf *bsdf = (ccl_private MicrofacetBsdf *)bsdf_alloc(
sd, sizeof(MicrofacetBsdf), weight);
@ -494,7 +495,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
!kernel_data.integrator.caustics_refractive && (path_flag & PATH_RAY_DIFFUSE))
break;
#endif
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private MicrofacetBsdf *bsdf = (ccl_private MicrofacetBsdf *)bsdf_alloc(
sd, sizeof(MicrofacetBsdf), weight);
@ -528,7 +529,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
break;
}
case CLOSURE_BSDF_ASHIKHMIN_VELVET_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private VelvetBsdf *bsdf = (ccl_private VelvetBsdf *)bsdf_alloc(
sd, sizeof(VelvetBsdf), weight);
@ -540,6 +541,19 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
}
break;
}
case CLOSURE_BSDF_SHEEN_ID: {
Spectrum weight = closure_weight * mix_weight;
ccl_private SheenBsdf *bsdf = (ccl_private SheenBsdf *)bsdf_alloc(
sd, sizeof(SheenBsdf), weight);
if (bsdf) {
bsdf->N = N;
bsdf->roughness = param1;
sd->flag |= bsdf_sheen_setup(kg, sd, bsdf);
}
break;
}
case CLOSURE_BSDF_GLOSSY_TOON_ID:
#ifdef __CAUSTICS_TRICKS__
if (!kernel_data.integrator.caustics_reflective && (path_flag & PATH_RAY_DIFFUSE))
@ -547,7 +561,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
ATTR_FALLTHROUGH;
#endif
case CLOSURE_BSDF_DIFFUSE_TOON_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private ToonBsdf *bsdf = (ccl_private ToonBsdf *)bsdf_alloc(
sd, sizeof(ToonBsdf), weight);
@ -569,7 +583,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
uint4 data_node3 = read_node(kg, &offset);
uint4 data_node4 = read_node(kg, &offset);
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
uint offset_ofs, ior_ofs, color_ofs, parametrization;
svm_unpack_node_uchar4(data_node.y, &offset_ofs, &ior_ofs, &color_ofs, &parametrization);
@ -678,7 +692,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
}
case CLOSURE_BSDF_HAIR_REFLECTION_ID:
case CLOSURE_BSDF_HAIR_TRANSMISSION_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private HairBsdf *bsdf = (ccl_private HairBsdf *)bsdf_alloc(
sd, sizeof(HairBsdf), weight);
@ -715,7 +729,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
case CLOSURE_BSSRDF_BURLEY_ID:
case CLOSURE_BSSRDF_RANDOM_WALK_ID:
case CLOSURE_BSSRDF_RANDOM_WALK_FIXED_RADIUS_ID: {
Spectrum weight = sd->svm_closure_weight * mix_weight;
Spectrum weight = closure_weight * mix_weight;
ccl_private Bssrdf *bssrdf = bssrdf_alloc(sd, weight);
if (bssrdf) {
@ -726,7 +740,7 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
param1 = 0.0f;
bssrdf->radius = rgb_to_spectrum(stack_load_float3(stack, data_node.z) * param1);
bssrdf->albedo = sd->svm_closure_weight;
bssrdf->albedo = closure_weight;
bssrdf->N = N;
bssrdf->roughness = FLT_MAX;
@ -751,6 +765,7 @@ template<ShaderType shader_type>
ccl_device_noinline void svm_node_closure_volume(KernelGlobals kg,
ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node)
{
#ifdef __VOLUME__
@ -775,7 +790,7 @@ ccl_device_noinline void svm_node_closure_volume(KernelGlobals kg,
density = mix_weight * fmaxf(density, 0.0f);
/* Compute scattering coefficient. */
Spectrum weight = sd->svm_closure_weight;
Spectrum weight = closure_weight;
if (type == CLOSURE_VOLUME_ABSORPTION_ID) {
weight = one_spectrum() - weight;
@ -806,6 +821,7 @@ template<ShaderType shader_type>
ccl_device_noinline int svm_node_principled_volume(KernelGlobals kg,
ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node,
uint32_t path_flag,
int offset)
@ -846,7 +862,7 @@ ccl_device_noinline int svm_node_principled_volume(KernelGlobals kg,
if (density > CLOSURE_WEIGHT_CUTOFF) {
/* Compute scattering color. */
Spectrum color = sd->svm_closure_weight;
Spectrum color = closure_weight;
const AttributeDescriptor attr_color = find_attribute(kg, sd, attr_node.y);
if (attr_color.offset != ATTR_STD_NOT_FOUND) {
@ -924,10 +940,11 @@ ccl_device_noinline int svm_node_principled_volume(KernelGlobals kg,
ccl_device_noinline void svm_node_closure_emission(ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node)
{
uint mix_weight_offset = node.y;
Spectrum weight = sd->svm_closure_weight;
Spectrum weight = closure_weight;
if (stack_valid(mix_weight_offset)) {
float mix_weight = stack_load_float(stack, mix_weight_offset);
@ -943,10 +960,11 @@ ccl_device_noinline void svm_node_closure_emission(ccl_private ShaderData *sd,
ccl_device_noinline void svm_node_closure_background(ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node)
{
uint mix_weight_offset = node.y;
Spectrum weight = sd->svm_closure_weight;
Spectrum weight = closure_weight;
if (stack_valid(mix_weight_offset)) {
float mix_weight = stack_load_float(stack, mix_weight_offset);
@ -962,6 +980,7 @@ ccl_device_noinline void svm_node_closure_background(ccl_private ShaderData *sd,
ccl_device_noinline void svm_node_closure_holdout(ccl_private ShaderData *sd,
ccl_private float *stack,
Spectrum closure_weight,
uint4 node)
{
uint mix_weight_offset = node.y;
@ -972,49 +991,42 @@ ccl_device_noinline void svm_node_closure_holdout(ccl_private ShaderData *sd,
if (mix_weight == 0.0f)
return;
closure_alloc(
sd, sizeof(ShaderClosure), CLOSURE_HOLDOUT_ID, sd->svm_closure_weight * mix_weight);
closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_HOLDOUT_ID, closure_weight * mix_weight);
}
else
closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_HOLDOUT_ID, sd->svm_closure_weight);
closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_HOLDOUT_ID, closure_weight);
sd->flag |= SD_HOLDOUT;
}
/* Closure Nodes */
ccl_device_inline void svm_node_closure_store_weight(ccl_private ShaderData *sd, Spectrum weight)
ccl_device void svm_node_closure_set_weight(
ccl_private ShaderData *sd, ccl_private Spectrum *closure_weight, uint r, uint g, uint b)
{
sd->svm_closure_weight = weight;
}
ccl_device void svm_node_closure_set_weight(ccl_private ShaderData *sd, uint r, uint g, uint b)
{
Spectrum weight = rgb_to_spectrum(
*closure_weight = rgb_to_spectrum(
make_float3(__uint_as_float(r), __uint_as_float(g), __uint_as_float(b)));
svm_node_closure_store_weight(sd, weight);
}
ccl_device void svm_node_closure_weight(ccl_private ShaderData *sd,
ccl_private float *stack,
ccl_private Spectrum *closure_weight,
uint weight_offset)
{
Spectrum weight = rgb_to_spectrum(stack_load_float3(stack, weight_offset));
svm_node_closure_store_weight(sd, weight);
*closure_weight = rgb_to_spectrum(stack_load_float3(stack, weight_offset));
}
ccl_device_noinline void svm_node_emission_weight(KernelGlobals kg,
ccl_private ShaderData *sd,
ccl_private float *stack,
ccl_private Spectrum *closure_weight,
uint4 node)
{
uint color_offset = node.y;
uint strength_offset = node.z;
float strength = stack_load_float(stack, strength_offset);
Spectrum weight = rgb_to_spectrum(stack_load_float3(stack, color_offset)) * strength;
svm_node_closure_store_weight(sd, weight);
*closure_weight = rgb_to_spectrum(stack_load_float3(stack, color_offset)) * strength;
}
ccl_device_noinline void svm_node_mix_closure(ccl_private ShaderData *sd,

View File

@ -223,6 +223,7 @@ ccl_device void svm_eval_nodes(KernelGlobals kg,
uint32_t path_flag)
{
float stack[SVM_STACK_SIZE];
Spectrum closure_weight;
int offset = sd->shader & SHADER_MASK;
while (1) {
@ -245,30 +246,30 @@ ccl_device void svm_eval_nodes(KernelGlobals kg,
}
SVM_CASE(NODE_CLOSURE_BSDF)
offset = svm_node_closure_bsdf<node_feature_mask, type>(
kg, sd, stack, node, path_flag, offset);
kg, sd, stack, closure_weight, node, path_flag, offset);
break;
SVM_CASE(NODE_CLOSURE_EMISSION)
IF_KERNEL_NODES_FEATURE(EMISSION)
{
svm_node_closure_emission(sd, stack, node);
svm_node_closure_emission(sd, stack, closure_weight, node);
}
break;
SVM_CASE(NODE_CLOSURE_BACKGROUND)
IF_KERNEL_NODES_FEATURE(EMISSION)
{
svm_node_closure_background(sd, stack, node);
svm_node_closure_background(sd, stack, closure_weight, node);
}
break;
SVM_CASE(NODE_CLOSURE_SET_WEIGHT)
svm_node_closure_set_weight(sd, node.y, node.z, node.w);
svm_node_closure_set_weight(sd, &closure_weight, node.y, node.z, node.w);
break;
SVM_CASE(NODE_CLOSURE_WEIGHT)
svm_node_closure_weight(sd, stack, node.y);
svm_node_closure_weight(sd, stack, &closure_weight, node.y);
break;
SVM_CASE(NODE_EMISSION_WEIGHT)
IF_KERNEL_NODES_FEATURE(EMISSION)
{
svm_node_emission_weight(kg, sd, stack, node);
svm_node_emission_weight(kg, sd, stack, &closure_weight, node);
}
break;
SVM_CASE(NODE_MIX_CLOSURE)
@ -394,7 +395,7 @@ ccl_device void svm_eval_nodes(KernelGlobals kg,
svm_node_hsv(kg, sd, stack, node);
break;
SVM_CASE(NODE_CLOSURE_HOLDOUT)
svm_node_closure_holdout(sd, stack, node);
svm_node_closure_holdout(sd, stack, closure_weight, node);
break;
SVM_CASE(NODE_FRESNEL)
svm_node_fresnel(sd, stack, node.y, node.z, node.w);
@ -405,13 +406,14 @@ ccl_device void svm_eval_nodes(KernelGlobals kg,
SVM_CASE(NODE_CLOSURE_VOLUME)
IF_KERNEL_NODES_FEATURE(VOLUME)
{
svm_node_closure_volume<type>(kg, sd, stack, node);
svm_node_closure_volume<type>(kg, sd, stack, closure_weight, node);
}
break;
SVM_CASE(NODE_PRINCIPLED_VOLUME)
IF_KERNEL_NODES_FEATURE(VOLUME)
{
offset = svm_node_principled_volume<type>(kg, sd, stack, node, path_flag, offset);
offset = svm_node_principled_volume<type>(
kg, sd, stack, closure_weight, node, path_flag, offset);
}
break;
SVM_CASE(NODE_MATH)

View File

@ -416,6 +416,7 @@ typedef enum ClosureType {
CLOSURE_BSDF_DIFFUSE_RAMP_ID,
CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID,
CLOSURE_BSDF_PRINCIPLED_SHEEN_ID,
CLOSURE_BSDF_SHEEN_ID,
CLOSURE_BSDF_DIFFUSE_TOON_ID,
CLOSURE_BSDF_TRANSLUCENT_ID,

View File

@ -990,7 +990,6 @@ typedef struct ccl_align(16) ShaderData
/* Closure data, we store a fixed array of closures */
int num_closure;
int num_closure_left;
Spectrum svm_closure_weight;
/* Closure weights summed directly, so we can evaluate
* emission and shadow transparency with MAX_CLOSURE 0. */
@ -1233,7 +1232,7 @@ typedef struct KernelTables {
int ggx_glass_Eavg;
int ggx_glass_inv_E;
int ggx_glass_inv_Eavg;
int pad1;
int sheen_ltc;
} KernelTables;
static_assert_align(KernelTables, 16);

View File

@ -574,6 +574,7 @@ void ShaderManager::device_update_common(Device * /*device*/,
ktables->ggx_glass_Eavg = ensure_bsdf_table(dscene, scene, table_ggx_glass_Eavg);
ktables->ggx_glass_inv_E = ensure_bsdf_table(dscene, scene, table_ggx_glass_inv_E);
ktables->ggx_glass_inv_Eavg = ensure_bsdf_table(dscene, scene, table_ggx_glass_inv_Eavg);
ktables->sheen_ltc = ensure_bsdf_table(dscene, scene, table_sheen_ltc);
/* integrator */
KernelIntegrator *kintegrator = &dscene->data.integrator;

View File

@ -632,4 +632,105 @@ static const float table_ggx_glass_inv_Eavg[256] = {
1.000000f, 0.999883f, 0.998572f, 0.994065f, 0.984146f, 0.966784f, 0.940421f, 0.904186f, 0.858056f, 0.802932f, 0.740578f, 0.673420f, 0.604211f, 0.535654f, 0.470057f, 0.409136f
};
static const float table_sheen_ltc[3072] = {
0.01415f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.01941f, 0.01741f, 0.04610f, 0.10367f, 0.06244f, 0.23927f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.01927f, 0.01895f, 0.03002f, 0.03912f, 0.04938f, 0.05239f, 0.06018f, 0.06520f, 0.08253f, 0.21093f, 0.12785f, 0.19030f, 0.15254f, 0.16585f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.03084f, 0.03764f, 0.03952f, 0.04092f, 0.04433f, 0.05014f, 0.05570f, 0.06215f, 0.06660f, 0.07902f, 0.10099f, 0.10794f, 0.10632f, 0.12623f, 0.13931f, 0.15353f, 0.16109f, 0.14583f, 0.27891f, 0.22622f, 0.18932f, 0.20219f, 0.30269f, 0.38379f, 0.39038f, 0.46310f, 0.44663f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.04118f, 0.05152f, 0.05724f, 0.05863f, 0.05952f, 0.06149f, 0.06448f, 0.07004f, 0.07774f, 0.08632f, 0.09629f, 0.10592f, 0.10718f, 0.12207f, 0.13413f, 0.13702f, 0.15294f, 0.15121f, 0.17652f, 0.19532f, 0.20831f, 0.19762f, 0.24202f, 0.32995f, 0.30857f, 0.39596f, 0.38346f, 0.42503f, 0.41592f, 0.42512f, 0.36714f, 0.46502f,
0.05088f, 0.06485f, 0.07697f, 0.08334f, 0.08654f, 0.08950f, 0.09263f, 0.09711f, 0.10113f, 0.10913f, 0.11586f, 0.12425f, 0.12986f, 0.13530f, 0.15037f, 0.15165f, 0.15858f, 0.16660f, 0.18051f, 0.18022f, 0.19896f, 0.21095f, 0.21862f, 0.23861f, 0.25384f, 0.27394f, 0.28563f, 0.29160f, 0.29300f, 0.33458f, 0.36514f, 0.38746f,
0.06054f, 0.07710f, 0.09569f, 0.10917f, 0.11813f, 0.12469f, 0.12958f, 0.13406f, 0.13801f, 0.14324f, 0.14801f, 0.15359f, 0.15945f, 0.16688f, 0.17552f, 0.17956f, 0.18275f, 0.19293f, 0.20081f, 0.20817f, 0.21658f, 0.22866f, 0.23912f, 0.24736f, 0.26573f, 0.26821f, 0.28767f, 0.30592f, 0.31228f, 0.35297f, 0.35570f, 0.37077f,
0.07075f, 0.08974f, 0.11306f, 0.13241f, 0.14704f, 0.15763f, 0.16591f, 0.17258f, 0.17781f, 0.18234f, 0.18700f, 0.19101f, 0.19657f, 0.20165f, 0.20731f, 0.21150f, 0.21692f, 0.22536f, 0.23235f, 0.23720f, 0.24295f, 0.25154f, 0.26200f, 0.26907f, 0.28040f, 0.28922f, 0.30452f, 0.31567f, 0.33294f, 0.35084f, 0.37226f, 0.37956f,
0.08222f, 0.10394f, 0.13034f, 0.15361f, 0.17244f, 0.18620f, 0.19671f, 0.20509f, 0.21199f, 0.21726f, 0.22245f, 0.22702f, 0.23174f, 0.23571f, 0.23966f, 0.24384f, 0.24877f, 0.25548f, 0.26047f, 0.26863f, 0.27404f, 0.28088f, 0.29010f, 0.29704f, 0.30559f, 0.31519f, 0.32721f, 0.33828f, 0.35424f, 0.36868f, 0.38570f, 0.39707f,
0.09597f, 0.11972f, 0.14796f, 0.17350f, 0.19481f, 0.21136f, 0.22369f, 0.23330f, 0.24109f, 0.24787f, 0.25359f, 0.25878f, 0.26320f, 0.26831f, 0.27305f, 0.27810f, 0.28206f, 0.28734f, 0.29228f, 0.29719f, 0.30256f, 0.30857f, 0.31652f, 0.32438f, 0.33291f, 0.34012f, 0.35087f, 0.36243f, 0.37467f, 0.38986f, 0.40394f, 0.41719f,
0.11173f, 0.13694f, 0.16797f, 0.19358f, 0.21571f, 0.23427f, 0.24900f, 0.26011f, 0.26884f, 0.27668f, 0.28326f, 0.28928f, 0.29445f, 0.29932f, 0.30454f, 0.30943f, 0.31431f, 0.31861f, 0.32326f, 0.32881f, 0.33479f, 0.34094f, 0.34705f, 0.35341f, 0.36079f, 0.36863f, 0.37512f, 0.38607f, 0.39611f, 0.41085f, 0.42341f, 0.43959f,
0.12869f, 0.15653f, 0.18847f, 0.21397f, 0.23632f, 0.25652f, 0.27273f, 0.28564f, 0.29568f, 0.30413f, 0.31142f, 0.31801f, 0.32424f, 0.32941f, 0.33479f, 0.33933f, 0.34444f, 0.34892f, 0.35415f, 0.35873f, 0.36457f, 0.36975f, 0.37684f, 0.38258f, 0.39038f, 0.39755f, 0.40428f, 0.41192f, 0.42141f, 0.43074f, 0.44659f, 0.46013f,
0.14693f, 0.17828f, 0.20991f, 0.23513f, 0.25809f, 0.27850f, 0.29576f, 0.30999f, 0.32128f, 0.33053f, 0.33854f, 0.34549f, 0.35212f, 0.35806f, 0.36371f, 0.36901f, 0.37416f, 0.37907f, 0.38378f, 0.38887f, 0.39366f, 0.39953f, 0.40534f, 0.41134f, 0.41832f, 0.42583f, 0.43323f, 0.44084f, 0.44897f, 0.45832f, 0.47095f, 0.48340f,
0.16755f, 0.20139f, 0.23191f, 0.25781f, 0.28103f, 0.30124f, 0.31874f, 0.33379f, 0.34648f, 0.35662f, 0.36536f, 0.37289f, 0.37956f, 0.38585f, 0.39167f, 0.39736f, 0.40272f, 0.40787f, 0.41311f, 0.41811f, 0.42324f, 0.42871f, 0.43459f, 0.44015f, 0.44634f, 0.45322f, 0.46073f, 0.46815f, 0.47699f, 0.48579f, 0.49728f, 0.50776f,
0.19101f, 0.22471f, 0.25559f, 0.28173f, 0.30495f, 0.32541f, 0.34337f, 0.35848f, 0.37152f, 0.38267f, 0.39205f, 0.40013f, 0.40731f, 0.41385f, 0.41996f, 0.42572f, 0.43136f, 0.43675f, 0.44210f, 0.44729f, 0.45254f, 0.45786f, 0.46336f, 0.46904f, 0.47514f, 0.48162f, 0.48829f, 0.49548f, 0.50339f, 0.51184f, 0.52150f, 0.53151f,
0.21608f, 0.24910f, 0.28069f, 0.30724f, 0.33032f, 0.35096f, 0.36879f, 0.38457f, 0.39755f, 0.40917f, 0.41915f, 0.42790f, 0.43555f, 0.44253f, 0.44886f, 0.45491f, 0.46058f, 0.46590f, 0.47137f, 0.47670f, 0.48207f, 0.48730f, 0.49275f, 0.49832f, 0.50411f, 0.51004f, 0.51646f, 0.52320f, 0.53028f, 0.53801f, 0.54612f, 0.55540f,
0.24162f, 0.27454f, 0.30746f, 0.33408f, 0.35697f, 0.37775f, 0.39587f, 0.41165f, 0.42539f, 0.43716f, 0.44735f, 0.45639f, 0.46453f, 0.47188f, 0.47840f, 0.48473f, 0.49060f, 0.49627f, 0.50156f, 0.50672f, 0.51205f, 0.51720f, 0.52258f, 0.52812f, 0.53331f, 0.53939f, 0.54508f, 0.55110f, 0.55773f, 0.56432f, 0.57204f, 0.58012f,
0.26781f, 0.30184f, 0.33546f, 0.36236f, 0.38543f, 0.40587f, 0.42394f, 0.43980f, 0.45355f, 0.46600f, 0.47658f, 0.48605f, 0.49437f, 0.50188f, 0.50886f, 0.51521f, 0.52114f, 0.52686f, 0.53234f, 0.53760f, 0.54305f, 0.54802f, 0.55334f, 0.55850f, 0.56350f, 0.56858f, 0.57426f, 0.57961f, 0.58579f, 0.59207f, 0.59839f, 0.60588f,
0.29552f, 0.33034f, 0.36464f, 0.39162f, 0.41468f, 0.43479f, 0.45273f, 0.46884f, 0.48278f, 0.49535f, 0.50635f, 0.51611f, 0.52482f, 0.53261f, 0.53981f, 0.54631f, 0.55239f, 0.55818f, 0.56348f, 0.56875f, 0.57406f, 0.57898f, 0.58395f, 0.58890f, 0.59356f, 0.59866f, 0.60366f, 0.60857f, 0.61392f, 0.61896f, 0.62446f, 0.63114f,
0.32493f, 0.36044f, 0.39500f, 0.42214f, 0.44504f, 0.46513f, 0.48260f, 0.49819f, 0.51220f, 0.52491f, 0.53607f, 0.54604f, 0.55497f, 0.56304f, 0.57042f, 0.57716f, 0.58338f, 0.58922f, 0.59463f, 0.59983f, 0.60510f, 0.60997f, 0.61473f, 0.61957f, 0.62409f, 0.62852f, 0.63251f, 0.63750f, 0.64231f, 0.64613f, 0.65086f, 0.65651f,
0.35603f, 0.39159f, 0.42682f, 0.45440f, 0.47706f, 0.49652f, 0.51370f, 0.52869f, 0.54234f, 0.55442f, 0.56541f, 0.57520f, 0.58426f, 0.59238f, 0.59985f, 0.60666f, 0.61307f, 0.61890f, 0.62438f, 0.62953f, 0.63458f, 0.63958f, 0.64422f, 0.64882f, 0.65331f, 0.65733f, 0.66150f, 0.66582f, 0.66990f, 0.67332f, 0.67675f, 0.68186f,
0.38874f, 0.42458f, 0.46012f, 0.48761f, 0.51008f, 0.52938f, 0.54611f, 0.56050f, 0.57333f, 0.58470f, 0.59503f, 0.60417f, 0.61278f, 0.62064f, 0.62794f, 0.63473f, 0.64102f, 0.64684f, 0.65232f, 0.65750f, 0.66247f, 0.66730f, 0.67176f, 0.67590f, 0.68040f, 0.68408f, 0.68813f, 0.69178f, 0.69592f, 0.69962f, 0.70287f, 0.70573f,
0.42286f, 0.45893f, 0.49450f, 0.52171f, 0.54404f, 0.56282f, 0.57891f, 0.59290f, 0.60505f, 0.61587f, 0.62546f, 0.63399f, 0.64186f, 0.64911f, 0.65567f, 0.66186f, 0.66775f, 0.67323f, 0.67844f, 0.68333f, 0.68809f, 0.69262f, 0.69697f, 0.70127f, 0.70529f, 0.70896f, 0.71278f, 0.71635f, 0.71997f, 0.72323f, 0.72673f, 0.72944f,
0.45873f, 0.49433f, 0.52949f, 0.55633f, 0.57809f, 0.59634f, 0.61180f, 0.62517f, 0.63669f, 0.64685f, 0.65584f, 0.66376f, 0.67113f, 0.67765f, 0.68370f, 0.68930f, 0.69443f, 0.69947f, 0.70415f, 0.70855f, 0.71287f, 0.71661f, 0.72066f, 0.72451f, 0.72821f, 0.73152f, 0.73501f, 0.73849f, 0.74160f, 0.74481f, 0.74776f, 0.75105f,
0.49554f, 0.53027f, 0.56475f, 0.59075f, 0.61170f, 0.62919f, 0.64398f, 0.65664f, 0.66758f, 0.67700f, 0.68535f, 0.69283f, 0.69943f, 0.70556f, 0.71100f, 0.71624f, 0.72083f, 0.72523f, 0.72925f, 0.73339f, 0.73715f, 0.74070f, 0.74402f, 0.74744f, 0.75049f, 0.75399f, 0.75685f, 0.75973f, 0.76249f, 0.76538f, 0.76785f, 0.77115f,
0.53272f, 0.56610f, 0.59929f, 0.62423f, 0.64430f, 0.66087f, 0.67490f, 0.68693f, 0.69725f, 0.70612f, 0.71373f, 0.72045f, 0.72654f, 0.73215f, 0.73731f, 0.74188f, 0.74597f, 0.74997f, 0.75337f, 0.75709f, 0.76060f, 0.76378f, 0.76659f, 0.76955f, 0.77230f, 0.77514f, 0.77793f, 0.78043f, 0.78282f, 0.78468f, 0.78754f, 0.78995f,
0.56932f, 0.60103f, 0.63267f, 0.65651f, 0.67543f, 0.69104f, 0.70419f, 0.71550f, 0.72506f, 0.73326f, 0.74047f, 0.74675f, 0.75230f, 0.75728f, 0.76209f, 0.76616f, 0.76990f, 0.77334f, 0.77650f, 0.77934f, 0.78214f, 0.78495f, 0.78732f, 0.78980f, 0.79245f, 0.79502f, 0.79706f, 0.79938f, 0.80116f, 0.80364f, 0.80529f, 0.80743f,
0.60446f, 0.63433f, 0.66433f, 0.68668f, 0.70457f, 0.71943f, 0.73164f, 0.74200f, 0.75088f, 0.75865f, 0.76531f, 0.77096f, 0.77604f, 0.78047f, 0.78462f, 0.78846f, 0.79171f, 0.79502f, 0.79763f, 0.80039f, 0.80272f, 0.80522f, 0.80755f, 0.80954f, 0.81129f, 0.81256f, 0.81479f, 0.81667f, 0.81865f, 0.82066f, 0.82209f, 0.82367f,
0.63783f, 0.66580f, 0.69379f, 0.71493f, 0.73184f, 0.74566f, 0.75715f, 0.76684f, 0.77502f, 0.78192f, 0.78802f, 0.79346f, 0.79805f, 0.80183f, 0.80557f, 0.80900f, 0.81218f, 0.81485f, 0.81744f, 0.81962f, 0.82179f, 0.82385f, 0.82598f, 0.82778f, 0.82910f, 0.83055f, 0.83184f, 0.83322f, 0.83509f, 0.83626f, 0.83803f, 0.83936f,
0.66881f, 0.69495f, 0.72127f, 0.74089f, 0.75676f, 0.76971f, 0.78031f, 0.78909f, 0.79688f, 0.80339f, 0.80909f, 0.81375f, 0.81807f, 0.82174f, 0.82535f, 0.82861f, 0.83083f, 0.83320f, 0.83559f, 0.83745f, 0.84005f, 0.84070f, 0.84245f, 0.84401f, 0.84503f, 0.84665f, 0.84777f, 0.84905f, 0.84999f, 0.85072f, 0.85236f, 0.85341f,
0.69740f, 0.72178f, 0.74630f, 0.76475f, 0.77931f, 0.79173f, 0.80171f, 0.81003f, 0.81725f, 0.82283f, 0.82781f, 0.83251f, 0.83628f, 0.83983f, 0.84284f, 0.84559f, 0.84790f, 0.85013f, 0.85214f, 0.85384f, 0.85537f, 0.85665f, 0.85860f, 0.85961f, 0.86039f, 0.86098f, 0.86192f, 0.86278f, 0.86425f, 0.86491f, 0.86581f, 0.86677f,
0.72363f, 0.74617f, 0.76908f, 0.78618f, 0.79981f, 0.81110f, 0.82060f, 0.82853f, 0.83504f, 0.84058f, 0.84521f, 0.84932f, 0.85275f, 0.85605f, 0.85877f, 0.86129f, 0.86320f, 0.86521f, 0.86654f, 0.86846f, 0.86997f, 0.87153f, 0.87288f, 0.87352f, 0.87465f, 0.87549f, 0.87626f, 0.87676f, 0.87714f, 0.87859f, 0.87952f, 0.87958f,
0.00060f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
-0.00232f, -0.00581f, -0.00769f, -0.00740f, -0.02445f, -0.00242f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
-0.01424f, -0.00218f, -0.00194f, -0.00384f, -0.00668f, -0.01107f, -0.00746f, -0.01591f, -0.01052f, -0.01495f, -0.01530f, -0.01428f, -0.01276f, -0.02071f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
-0.04909f, -0.00710f, -0.00236f, -0.00201f, -0.00298f, -0.00546f, -0.00834f, -0.01121f, -0.01294f, -0.01692f, -0.01639f, -0.01738f, -0.02032f, -0.01947f, -0.02354f, -0.02910f, -0.02565f, -0.02903f, -0.03066f, -0.03044f, -0.04045f, -0.03226f, -0.03443f, -0.03023f, -0.03610f, -0.02022f, -0.02590f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
-0.10668f, -0.02772f, -0.00717f, -0.00421f, -0.00351f, -0.00399f, -0.00522f, -0.00676f, -0.00866f, -0.01099f, -0.01332f, -0.01590f, -0.01724f, -0.02041f, -0.02237f, -0.02503f, -0.02664f, -0.02803f, -0.03188f, -0.03147f, -0.03346f, -0.03476f, -0.03464f, -0.03125f, -0.03303f, -0.03009f, -0.03198f, -0.02518f, -0.03195f, -0.01668f, -0.02978f, -0.00394f,
-0.16006f, -0.05552f, -0.01274f, -0.00932f, -0.00582f, -0.00507f, -0.00531f, -0.00616f, -0.00792f, -0.00949f, -0.01167f, -0.01421f, -0.01635f, -0.01858f, -0.02237f, -0.02450f, -0.02714f, -0.03145f, -0.03321f, -0.03295f, -0.03492f, -0.03365f, -0.03733f, -0.03930f, -0.03879f, -0.03580f, -0.04089f, -0.03604f, -0.03863f, -0.03575f, -0.02621f, 0.00124f,
-0.18133f, -0.08871f, -0.02800f, -0.01456f, -0.01052f, -0.00904f, -0.00864f, -0.00898f, -0.01019f, -0.01110f, -0.01354f, -0.01614f, -0.01922f, -0.02116f, -0.02363f, -0.02606f, -0.02887f, -0.03270f, -0.03492f, -0.03607f, -0.03714f, -0.03827f, -0.03832f, -0.03918f, -0.04071f, -0.04382f, -0.03860f, -0.03690f, -0.04032f, -0.03136f, -0.02365f, -0.00281f,
-0.18042f, -0.10806f, -0.04959f, -0.02418f, -0.01632f, -0.01333f, -0.01204f, -0.01177f, -0.01198f, -0.01284f, -0.01408f, -0.01571f, -0.01794f, -0.02041f, -0.02235f, -0.02516f, -0.02822f, -0.03168f, -0.03631f, -0.03840f, -0.04024f, -0.04645f, -0.04435f, -0.04644f, -0.04369f, -0.05007f, -0.04809f, -0.04719f, -0.04179f, -0.03537f, -0.02633f, 0.00196f,
-0.17531f, -0.13135f, -0.08092f, -0.04065f, -0.02431f, -0.01864f, -0.01620f, -0.01498f, -0.01460f, -0.01487f, -0.01549f, -0.01665f, -0.01802f, -0.01985f, -0.02185f, -0.02424f, -0.02636f, -0.02871f, -0.03133f, -0.03455f, -0.03705f, -0.03931f, -0.04546f, -0.04797f, -0.04990f, -0.04903f, -0.04842f, -0.04495f, -0.04310f, -0.03925f, -0.02709f, 0.00103f,
-0.17397f, -0.15003f, -0.10394f, -0.06278f, -0.03698f, -0.02667f, -0.02186f, -0.01962f, -0.01854f, -0.01810f, -0.01829f, -0.01882f, -0.01990f, -0.02103f, -0.02243f, -0.02425f, -0.02611f, -0.02809f, -0.03045f, -0.03211f, -0.03413f, -0.03666f, -0.03882f, -0.04150f, -0.04323f, -0.04376f, -0.04590f, -0.04591f, -0.04202f, -0.03859f, -0.03046f, 0.00025f,
-0.17686f, -0.16229f, -0.12071f, -0.08778f, -0.05746f, -0.03882f, -0.03044f, -0.02620f, -0.02412f, -0.02290f, -0.02247f, -0.02235f, -0.02283f, -0.02349f, -0.02444f, -0.02562f, -0.02725f, -0.02859f, -0.03047f, -0.03199f, -0.03417f, -0.03618f, -0.03771f, -0.03920f, -0.04070f, -0.04138f, -0.04066f, -0.04125f, -0.03916f, -0.03764f, -0.02956f, 0.00020f,
-0.17952f, -0.16921f, -0.13634f, -0.10854f, -0.08164f, -0.05663f, -0.04256f, -0.03522f, -0.03124f, -0.02895f, -0.02760f, -0.02688f, -0.02653f, -0.02669f, -0.02714f, -0.02784f, -0.02878f, -0.02988f, -0.03136f, -0.03261f, -0.03429f, -0.03567f, -0.03742f, -0.03792f, -0.03954f, -0.04002f, -0.04014f, -0.03889f, -0.03739f, -0.03386f, -0.02810f, 0.00013f,
-0.17953f, -0.17294f, -0.14837f, -0.12458f, -0.10127f, -0.07912f, -0.05884f, -0.04715f, -0.04041f, -0.03637f, -0.03401f, -0.03244f, -0.03165f, -0.03113f, -0.03104f, -0.03134f, -0.03173f, -0.03225f, -0.03304f, -0.03406f, -0.03515f, -0.03594f, -0.03728f, -0.03825f, -0.03910f, -0.03960f, -0.03950f, -0.03877f, -0.03647f, -0.03283f, -0.02659f, -0.00002f,
-0.17802f, -0.17499f, -0.15708f, -0.13619f, -0.11601f, -0.09763f, -0.07926f, -0.06262f, -0.05277f, -0.04616f, -0.04217f, -0.03952f, -0.03771f, -0.03664f, -0.03576f, -0.03561f, -0.03531f, -0.03537f, -0.03577f, -0.03606f, -0.03657f, -0.03725f, -0.03790f, -0.03830f, -0.03850f, -0.03897f, -0.03886f, -0.03764f, -0.03576f, -0.03199f, -0.02678f, -0.00003f,
-0.17570f, -0.17630f, -0.16233f, -0.14459f, -0.12739f, -0.11162f, -0.09667f, -0.08188f, -0.06821f, -0.05887f, -0.05240f, -0.04793f, -0.04499f, -0.04300f, -0.04151f, -0.04033f, -0.03975f, -0.03947f, -0.03943f, -0.03917f, -0.03889f, -0.03887f, -0.03909f, -0.03903f, -0.03922f, -0.03917f, -0.03827f, -0.03702f, -0.03465f, -0.03118f, -0.02485f, -0.00021f,
-0.17314f, -0.17599f, -0.16514f, -0.15021f, -0.13557f, -0.12161f, -0.10876f, -0.09665f, -0.08454f, -0.07412f, -0.06463f, -0.05848f, -0.05371f, -0.05046f, -0.04821f, -0.04588f, -0.04438f, -0.04412f, -0.04304f, -0.04215f, -0.04161f, -0.04144f, -0.04059f, -0.04032f, -0.03974f, -0.03905f, -0.03800f, -0.03639f, -0.03436f, -0.03031f, -0.02493f, 0.00004f,
-0.17052f, -0.17439f, -0.16579f, -0.15358f, -0.14112f, -0.12867f, -0.11735f, -0.10700f, -0.09729f, -0.08817f, -0.07945f, -0.07137f, -0.06390f, -0.05902f, -0.05627f, -0.05274f, -0.05014f, -0.04809f, -0.04704f, -0.04617f, -0.04471f, -0.04402f, -0.04284f, -0.04140f, -0.04084f, -0.03922f, -0.03852f, -0.03648f, -0.03362f, -0.02977f, -0.02257f, 0.00013f,
-0.16726f, -0.17130f, -0.16494f, -0.15479f, -0.14389f, -0.13313f, -0.12315f, -0.11396f, -0.10555f, -0.09751f, -0.08994f, -0.08303f, -0.07661f, -0.07012f, -0.06435f, -0.06079f, -0.05751f, -0.05490f, -0.05237f, -0.05016f, -0.04763f, -0.04636f, -0.04452f, -0.04311f, -0.04186f, -0.04059f, -0.03828f, -0.03642f, -0.03293f, -0.02837f, -0.02183f, 0.00014f,
-0.16307f, -0.16735f, -0.16269f, -0.15439f, -0.14491f, -0.13568f, -0.12677f, -0.11827f, -0.11077f, -0.10366f, -0.09707f, -0.09088f, -0.08505f, -0.07920f, -0.07391f, -0.06982f, -0.06584f, -0.06111f, -0.05885f, -0.05560f, -0.05216f, -0.04974f, -0.04738f, -0.04525f, -0.04361f, -0.04122f, -0.03869f, -0.03626f, -0.03267f, -0.02853f, -0.02146f, 0.00013f,
-0.15800f, -0.16239f, -0.15918f, -0.15229f, -0.14422f, -0.13589f, -0.12801f, -0.12058f, -0.11368f, -0.10715f, -0.10121f, -0.09561f, -0.09044f, -0.08553f, -0.08073f, -0.07643f, -0.07244f, -0.06816f, -0.06506f, -0.06156f, -0.05721f, -0.05394f, -0.05071f, -0.04764f, -0.04512f, -0.04243f, -0.04049f, -0.03634f, -0.03217f, -0.02798f, -0.02084f, -0.00002f,
-0.15221f, -0.15659f, -0.15414f, -0.14815f, -0.14135f, -0.13430f, -0.12720f, -0.12066f, -0.11418f, -0.10835f, -0.10297f, -0.09810f, -0.09325f, -0.08885f, -0.08462f, -0.08047f, -0.07647f, -0.07278f, -0.06918f, -0.06581f, -0.06234f, -0.05873f, -0.05531f, -0.05182f, -0.04822f, -0.04527f, -0.04160f, -0.03748f, -0.03270f, -0.02788f, -0.02071f, 0.00002f,
-0.14547f, -0.14938f, -0.14757f, -0.14257f, -0.13671f, -0.13046f, -0.12415f, -0.11845f, -0.11284f, -0.10773f, -0.10264f, -0.09831f, -0.09386f, -0.08976f, -0.08593f, -0.08203f, -0.07852f, -0.07474f, -0.07134f, -0.06788f, -0.06462f, -0.06134f, -0.05808f, -0.05475f, -0.05106f, -0.04764f, -0.04367f, -0.03955f, -0.03412f, -0.02813f, -0.02016f, 0.00006f,
-0.13764f, -0.14091f, -0.13944f, -0.13527f, -0.13016f, -0.12479f, -0.11949f, -0.11426f, -0.10951f, -0.10470f, -0.10029f, -0.09638f, -0.09229f, -0.08880f, -0.08519f, -0.08157f, -0.07846f, -0.07504f, -0.07174f, -0.06833f, -0.06521f, -0.06204f, -0.05878f, -0.05553f, -0.05205f, -0.04825f, -0.04429f, -0.03988f, -0.03495f, -0.02900f, -0.02079f, 0.00004f,
-0.12835f, -0.13100f, -0.12981f, -0.12616f, -0.12174f, -0.11714f, -0.11273f, -0.10827f, -0.10407f, -0.09994f, -0.09624f, -0.09244f, -0.08921f, -0.08575f, -0.08256f, -0.07941f, -0.07619f, -0.07326f, -0.07019f, -0.06708f, -0.06409f, -0.06080f, -0.05775f, -0.05456f, -0.05117f, -0.04735f, -0.04351f, -0.03929f, -0.03433f, -0.02845f, -0.02023f, 0.00006f,
-0.11754f, -0.11957f, -0.11844f, -0.11545f, -0.11182f, -0.10788f, -0.10410f, -0.10044f, -0.09697f, -0.09338f, -0.09011f, -0.08701f, -0.08398f, -0.08119f, -0.07822f, -0.07555f, -0.07263f, -0.06975f, -0.06691f, -0.06419f, -0.06130f, -0.05852f, -0.05539f, -0.05231f, -0.04891f, -0.04558f, -0.04169f, -0.03736f, -0.03256f, -0.02662f, -0.01865f, 0.00005f,
-0.10493f, -0.10643f, -0.10534f, -0.10298f, -0.10006f, -0.09686f, -0.09377f, -0.09079f, -0.08792f, -0.08524f, -0.08232f, -0.07970f, -0.07708f, -0.07461f, -0.07219f, -0.06976f, -0.06728f, -0.06490f, -0.06230f, -0.05978f, -0.05720f, -0.05462f, -0.05180f, -0.04891f, -0.04571f, -0.04252f, -0.03908f, -0.03509f, -0.03041f, -0.02457f, -0.01737f, 0.00006f,
-0.09075f, -0.09168f, -0.09087f, -0.08897f, -0.08664f, -0.08420f, -0.08174f, -0.07948f, -0.07710f, -0.07491f, -0.07278f, -0.07074f, -0.06867f, -0.06656f, -0.06453f, -0.06249f, -0.06046f, -0.05835f, -0.05612f, -0.05390f, -0.05159f, -0.04919f, -0.04660f, -0.04409f, -0.04133f, -0.03835f, -0.03500f, -0.03151f, -0.02721f, -0.02228f, -0.01553f, 0.00008f,
-0.07481f, -0.07540f, -0.07476f, -0.07333f, -0.07166f, -0.06986f, -0.06808f, -0.06634f, -0.06465f, -0.06301f, -0.06140f, -0.05975f, -0.05817f, -0.05654f, -0.05499f, -0.05337f, -0.05168f, -0.04998f, -0.04815f, -0.04639f, -0.04448f, -0.04252f, -0.04044f, -0.03811f, -0.03571f, -0.03305f, -0.03031f, -0.02709f, -0.02350f, -0.01932f, -0.01368f, 0.00002f,
-0.05754f, -0.05784f, -0.05736f, -0.05642f, -0.05529f, -0.05410f, -0.05290f, -0.05171f, -0.05055f, -0.04938f, -0.04824f, -0.04716f, -0.04606f, -0.04480f, -0.04364f, -0.04245f, -0.04128f, -0.03999f, -0.03873f, -0.03727f, -0.03580f, -0.03429f, -0.03268f, -0.03089f, -0.02898f, -0.02688f, -0.02463f, -0.02206f, -0.01925f, -0.01574f, -0.01128f, -0.00001f,
-0.03902f, -0.03917f, -0.03890f, -0.03836f, -0.03768f, -0.03701f, -0.03631f, -0.03559f, -0.03488f, -0.03421f, -0.03354f, -0.03284f, -0.03212f, -0.03140f, -0.03066f, -0.02992f, -0.02915f, -0.02828f, -0.02745f, -0.02649f, -0.02553f, -0.02440f, -0.02332f, -0.02210f, -0.02076f, -0.01940f, -0.01782f, -0.01601f, -0.01390f, -0.01143f, -0.00812f, 0.00002f,
-0.01972f, -0.01980f, -0.01969f, -0.01946f, -0.01916f, -0.01888f, -0.01860f, -0.01833f, -0.01802f, -0.01768f, -0.01737f, -0.01712f, -0.01681f, -0.01645f, -0.01610f, -0.01577f, -0.01538f, -0.01498f, -0.01455f, -0.01407f, -0.01356f, -0.01304f, -0.01251f, -0.01189f, -0.01119f, -0.01040f, -0.00953f, -0.00857f, -0.00751f, -0.00614f, -0.00433f, 0.00002f,
0.00000f, -0.00002f, 0.00000f, -0.00002f, -0.00003f, -0.00001f, -0.00001f, -0.00004f, -0.00002f, -0.00003f, -0.00005f, -0.00002f, -0.00000f, -0.00001f, -0.00001f, -0.00001f, -0.00005f, -0.00004f, -0.00002f, -0.00002f, -0.00001f, 0.00003f, 0.00002f, 0.00003f, 0.00004f, 0.00003f, 0.00006f, 0.00004f, 0.00006f, 0.00006f, 0.00009f, 0.00003f,
0.00001f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.05839f, 0.00071f, 0.00007f, 0.00002f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.38834f, 0.09768f, 0.01072f, 0.00150f, 0.00039f, 0.00012f, 0.00006f, 0.00003f, 0.00002f, 0.00002f, 0.00001f, 0.00001f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.55348f, 0.29827f, 0.11755f, 0.03677f, 0.00983f, 0.00288f, 0.00101f, 0.00046f, 0.00023f, 0.00014f, 0.00010f, 0.00006f, 0.00004f, 0.00003f, 0.00002f, 0.00002f, 0.00001f, 0.00001f, 0.00001f, 0.00001f, 0.00001f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f, 0.00000f,
0.63273f, 0.42999f, 0.24931f, 0.13040f, 0.05910f, 0.02430f, 0.00981f, 0.00433f, 0.00200f, 0.00105f, 0.00062f, 0.00039f, 0.00024f, 0.00018f, 0.00013f, 0.00009f, 0.00008f, 0.00006f, 0.00005f, 0.00004f, 0.00003f, 0.00002f, 0.00002f, 0.00002f, 0.00002f, 0.00002f, 0.00001f, 0.00001f, 0.00001f, 0.00001f, 0.00001f, 0.00001f,
0.67021f, 0.50797f, 0.34475f, 0.22264f, 0.13300f, 0.07375f, 0.03867f, 0.02006f, 0.01032f, 0.00570f, 0.00324f, 0.00197f, 0.00122f, 0.00080f, 0.00059f, 0.00040f, 0.00030f, 0.00022f, 0.00018f, 0.00013f, 0.00012f, 0.00009f, 0.00008f, 0.00007f, 0.00006f, 0.00005f, 0.00004f, 0.00003f, 0.00003f, 0.00002f, 0.00002f, 0.00002f,
0.68765f, 0.55387f, 0.41042f, 0.29613f, 0.20481f, 0.13463f, 0.08432f, 0.05135f, 0.03073f, 0.01861f, 0.01132f, 0.00706f, 0.00454f, 0.00304f, 0.00212f, 0.00145f, 0.00102f, 0.00078f, 0.00059f, 0.00046f, 0.00036f, 0.00030f, 0.00025f, 0.00020f, 0.00017f, 0.00013f, 0.00012f, 0.00010f, 0.00008f, 0.00008f, 0.00006f, 0.00006f,
0.69478f, 0.58263f, 0.45689f, 0.35318f, 0.26617f, 0.19342f, 0.13650f, 0.09391f, 0.06299f, 0.04183f, 0.02782f, 0.01845f, 0.01259f, 0.00864f, 0.00604f, 0.00421f, 0.00303f, 0.00228f, 0.00172f, 0.00129f, 0.00099f, 0.00079f, 0.00066f, 0.00052f, 0.00044f, 0.00034f, 0.00029f, 0.00024f, 0.00021f, 0.00019f, 0.00017f, 0.00013f,
0.69794f, 0.60100f, 0.49085f, 0.39802f, 0.31773f, 0.24683f, 0.18787f, 0.13964f, 0.10220f, 0.07319f, 0.05252f, 0.03747f, 0.02685f, 0.01915f, 0.01375f, 0.00996f, 0.00733f, 0.00552f, 0.00415f, 0.00322f, 0.00247f, 0.00194f, 0.00157f, 0.00126f, 0.00102f, 0.00082f, 0.00069f, 0.00059f, 0.00048f, 0.00042f, 0.00037f, 0.00030f,
0.69862f, 0.61474f, 0.51662f, 0.43321f, 0.35989f, 0.29352f, 0.23483f, 0.18491f, 0.14298f, 0.10960f, 0.08309f, 0.06268f, 0.04689f, 0.03539f, 0.02666f, 0.02015f, 0.01519f, 0.01160f, 0.00888f, 0.00683f, 0.00531f, 0.00417f, 0.00334f, 0.00270f, 0.00220f, 0.00178f, 0.00148f, 0.00123f, 0.00101f, 0.00087f, 0.00073f, 0.00061f,
0.69840f, 0.62456f, 0.53780f, 0.46227f, 0.39486f, 0.33234f, 0.27724f, 0.22722f, 0.18345f, 0.14737f, 0.11687f, 0.09223f, 0.07219f, 0.05639f, 0.04424f, 0.03460f, 0.02709f, 0.02113f, 0.01656f, 0.01309f, 0.01041f, 0.00831f, 0.00665f, 0.00534f, 0.00434f, 0.00355f, 0.00288f, 0.00241f, 0.00200f, 0.00170f, 0.00142f, 0.00123f,
0.69766f, 0.63215f, 0.55391f, 0.48615f, 0.42355f, 0.36707f, 0.31348f, 0.26549f, 0.22185f, 0.18403f, 0.15141f, 0.12380f, 0.10104f, 0.08149f, 0.06598f, 0.05291f, 0.04275f, 0.03428f, 0.02771f, 0.02222f, 0.01807f, 0.01456f, 0.01195f, 0.00969f, 0.00798f, 0.00653f, 0.00534f, 0.00441f, 0.00368f, 0.00307f, 0.00264f, 0.00224f,
0.69641f, 0.63746f, 0.56861f, 0.50592f, 0.44888f, 0.39646f, 0.34628f, 0.30001f, 0.25727f, 0.21872f, 0.18530f, 0.15569f, 0.13073f, 0.10901f, 0.09059f, 0.07509f, 0.06205f, 0.05112f, 0.04199f, 0.03458f, 0.02839f, 0.02356f, 0.01946f, 0.01604f, 0.01337f, 0.01115f, 0.00925f, 0.00766f, 0.00639f, 0.00536f, 0.00456f, 0.00390f,
0.69548f, 0.64297f, 0.57917f, 0.52314f, 0.47074f, 0.42115f, 0.37424f, 0.33015f, 0.29017f, 0.25188f, 0.21825f, 0.18762f, 0.16043f, 0.13705f, 0.11638f, 0.09898f, 0.08360f, 0.07050f, 0.05948f, 0.04991f, 0.04182f, 0.03523f, 0.02974f, 0.02485f, 0.02085f, 0.01764f, 0.01489f, 0.01243f, 0.01052f, 0.00882f, 0.00762f, 0.00638f,
0.69518f, 0.64677f, 0.58896f, 0.53726f, 0.48924f, 0.44375f, 0.40045f, 0.35844f, 0.31901f, 0.28296f, 0.24905f, 0.21813f, 0.19041f, 0.16557f, 0.14360f, 0.12396f, 0.10719f, 0.09240f, 0.07951f, 0.06811f, 0.05809f, 0.04960f, 0.04242f, 0.03607f, 0.03098f, 0.02650f, 0.02249f, 0.01911f, 0.01630f, 0.01385f, 0.01187f, 0.01004f,
0.69404f, 0.65077f, 0.59738f, 0.55038f, 0.50616f, 0.46415f, 0.42260f, 0.38393f, 0.34548f, 0.31090f, 0.27757f, 0.24745f, 0.21932f, 0.19400f, 0.17119f, 0.15001f, 0.13153f, 0.11577f, 0.10099f, 0.08803f, 0.07655f, 0.06667f, 0.05763f, 0.05000f, 0.04326f, 0.03745f, 0.03233f, 0.02793f, 0.02410f, 0.02070f, 0.01799f, 0.01521f,
0.69373f, 0.65370f, 0.60556f, 0.56229f, 0.52099f, 0.48220f, 0.44396f, 0.40686f, 0.37145f, 0.33754f, 0.30538f, 0.27528f, 0.24688f, 0.22137f, 0.19867f, 0.17677f, 0.15718f, 0.13948f, 0.12389f, 0.10988f, 0.09688f, 0.08560f, 0.07528f, 0.06603f, 0.05819f, 0.05082f, 0.04467f, 0.03901f, 0.03404f, 0.02969f, 0.02565f, 0.02208f,
0.69374f, 0.65782f, 0.61300f, 0.57350f, 0.53560f, 0.49892f, 0.46321f, 0.42810f, 0.39357f, 0.36179f, 0.33055f, 0.30167f, 0.27438f, 0.24851f, 0.22461f, 0.20331f, 0.18338f, 0.16512f, 0.14824f, 0.13281f, 0.11850f, 0.10604f, 0.09447f, 0.08417f, 0.07499f, 0.06675f, 0.05906f, 0.05240f, 0.04618f, 0.04061f, 0.03571f, 0.03099f,
0.69478f, 0.66097f, 0.62010f, 0.58318f, 0.54812f, 0.51374f, 0.48033f, 0.44784f, 0.41543f, 0.38456f, 0.35481f, 0.32656f, 0.29983f, 0.27402f, 0.25049f, 0.22916f, 0.20899f, 0.18974f, 0.17283f, 0.15672f, 0.14161f, 0.12804f, 0.11552f, 0.10412f, 0.09392f, 0.08435f, 0.07566f, 0.06785f, 0.06058f, 0.05418f, 0.04812f, 0.04224f,
0.69636f, 0.66479f, 0.62662f, 0.59208f, 0.55948f, 0.52832f, 0.49686f, 0.46577f, 0.43550f, 0.40640f, 0.37791f, 0.35063f, 0.32440f, 0.29963f, 0.27592f, 0.25430f, 0.23411f, 0.21474f, 0.19748f, 0.18085f, 0.16496f, 0.15071f, 0.13745f, 0.12513f, 0.11401f, 0.10365f, 0.09444f, 0.08526f, 0.07697f, 0.06969f, 0.06274f, 0.05589f,
0.69769f, 0.66832f, 0.63306f, 0.60175f, 0.57114f, 0.54130f, 0.51227f, 0.48316f, 0.45520f, 0.42705f, 0.39979f, 0.37306f, 0.34799f, 0.32368f, 0.30051f, 0.27914f, 0.25902f, 0.24017f, 0.22242f, 0.20569f, 0.18950f, 0.17436f, 0.16053f, 0.14758f, 0.13555f, 0.12469f, 0.11431f, 0.10458f, 0.09545f, 0.08731f, 0.07957f, 0.07179f,
0.69990f, 0.67322f, 0.63986f, 0.61072f, 0.58210f, 0.55452f, 0.52757f, 0.49993f, 0.47308f, 0.44623f, 0.42075f, 0.39479f, 0.37078f, 0.34736f, 0.32486f, 0.30393f, 0.28339f, 0.26497f, 0.24680f, 0.23017f, 0.21383f, 0.19836f, 0.18437f, 0.17126f, 0.15847f, 0.14730f, 0.13611f, 0.12594f, 0.11582f, 0.10669f, 0.09818f, 0.09005f,
0.70253f, 0.67808f, 0.64711f, 0.61953f, 0.59306f, 0.56710f, 0.54128f, 0.51588f, 0.48993f, 0.46536f, 0.44072f, 0.41598f, 0.39289f, 0.36972f, 0.34812f, 0.32779f, 0.30734f, 0.28886f, 0.27113f, 0.25452f, 0.23828f, 0.22301f, 0.20869f, 0.19491f, 0.18216f, 0.17048f, 0.15888f, 0.14822f, 0.13785f, 0.12826f, 0.11891f, 0.11016f,
0.70614f, 0.68304f, 0.65400f, 0.62850f, 0.60424f, 0.57985f, 0.55495f, 0.53092f, 0.50671f, 0.48305f, 0.45902f, 0.43645f, 0.41315f, 0.39173f, 0.37068f, 0.35059f, 0.33162f, 0.31286f, 0.29534f, 0.27878f, 0.26263f, 0.24796f, 0.23332f, 0.21962f, 0.20663f, 0.19465f, 0.18279f, 0.17160f, 0.16118f, 0.15104f, 0.14164f, 0.13208f,
0.70978f, 0.68862f, 0.66139f, 0.63717f, 0.61414f, 0.59143f, 0.56846f, 0.54542f, 0.52211f, 0.49989f, 0.47731f, 0.45504f, 0.43352f, 0.41218f, 0.39227f, 0.37245f, 0.35421f, 0.33639f, 0.31941f, 0.30275f, 0.28712f, 0.27199f, 0.25799f, 0.24427f, 0.23147f, 0.21879f, 0.20716f, 0.19611f, 0.18534f, 0.17518f, 0.16553f, 0.15588f,
0.71478f, 0.69461f, 0.66938f, 0.64618f, 0.62412f, 0.60285f, 0.58132f, 0.55910f, 0.53711f, 0.51494f, 0.49425f, 0.47333f, 0.45290f, 0.43265f, 0.41291f, 0.39410f, 0.37624f, 0.35873f, 0.34249f, 0.32632f, 0.31088f, 0.29607f, 0.28230f, 0.26889f, 0.25622f, 0.24377f, 0.23184f, 0.22064f, 0.21005f, 0.20018f, 0.19021f, 0.18089f,
0.71955f, 0.70070f, 0.67652f, 0.65469f, 0.63411f, 0.61379f, 0.59365f, 0.57227f, 0.55184f, 0.53105f, 0.51035f, 0.49002f, 0.47031f, 0.45135f, 0.43250f, 0.41451f, 0.39705f, 0.38038f, 0.36453f, 0.34929f, 0.33447f, 0.32031f, 0.30694f, 0.29376f, 0.28119f, 0.26903f, 0.25765f, 0.24642f, 0.23605f, 0.22580f, 0.21630f, 0.20694f,
0.72541f, 0.70789f, 0.68481f, 0.66418f, 0.64427f, 0.62480f, 0.60530f, 0.58563f, 0.56577f, 0.54574f, 0.52594f, 0.50704f, 0.48812f, 0.46984f, 0.45179f, 0.43440f, 0.41775f, 0.40149f, 0.38649f, 0.37146f, 0.35737f, 0.34354f, 0.33020f, 0.31798f, 0.30606f, 0.29475f, 0.28330f, 0.27265f, 0.26226f, 0.25205f, 0.24262f, 0.23366f,
0.73110f, 0.71450f, 0.69314f, 0.67318f, 0.65409f, 0.63543f, 0.61665f, 0.59776f, 0.57875f, 0.56005f, 0.54142f, 0.52249f, 0.50438f, 0.48754f, 0.47040f, 0.45369f, 0.43725f, 0.42211f, 0.40702f, 0.39305f, 0.37945f, 0.36620f, 0.35338f, 0.34141f, 0.33004f, 0.31907f, 0.30846f, 0.29842f, 0.28818f, 0.27866f, 0.26919f, 0.26038f,
0.73750f, 0.72144f, 0.70116f, 0.68204f, 0.66379f, 0.64562f, 0.62792f, 0.61014f, 0.59193f, 0.57344f, 0.55536f, 0.53793f, 0.52063f, 0.50374f, 0.48732f, 0.47141f, 0.45633f, 0.44181f, 0.42730f, 0.41385f, 0.40059f, 0.38881f, 0.37643f, 0.36506f, 0.35431f, 0.34339f, 0.33324f, 0.32345f, 0.31425f, 0.30523f, 0.29632f, 0.28782f,
0.74339f, 0.72804f, 0.70892f, 0.69082f, 0.67367f, 0.65573f, 0.63826f, 0.62090f, 0.60355f, 0.58677f, 0.56971f, 0.55229f, 0.53567f, 0.51970f, 0.50407f, 0.48879f, 0.47446f, 0.46044f, 0.44710f, 0.43403f, 0.42174f, 0.41005f, 0.39844f, 0.38755f, 0.37756f, 0.36805f, 0.35846f, 0.34911f, 0.33962f, 0.33144f, 0.32300f, 0.31508f,
0.74973f, 0.73527f, 0.71668f, 0.69953f, 0.68291f, 0.66623f, 0.64940f, 0.63212f, 0.61545f, 0.59849f, 0.58226f, 0.56605f, 0.55034f, 0.53461f, 0.51974f, 0.50561f, 0.49191f, 0.47875f, 0.46632f, 0.45401f, 0.44209f, 0.43044f, 0.42005f, 0.40990f, 0.39997f, 0.39069f, 0.38171f, 0.37342f, 0.36523f, 0.35675f, 0.34897f, 0.34187f
};
CCL_NAMESPACE_END

View File

@ -2559,35 +2559,42 @@ void ToonBsdfNode::compile(OSLCompiler &compiler)
compiler.add(this, "node_toon_bsdf");
}
/* Velvet BSDF Closure */
/* Sheen BSDF Closure */
NODE_DEFINE(VelvetBsdfNode)
NODE_DEFINE(SheenBsdfNode)
{
NodeType *type = NodeType::add("velvet_bsdf", create, NodeType::SHADER);
NodeType *type = NodeType::add("sheen_bsdf", create, NodeType::SHADER);
SOCKET_IN_COLOR(color, "Color", make_float3(0.8f, 0.8f, 0.8f));
SOCKET_IN_NORMAL(normal, "Normal", zero_float3(), SocketType::LINK_NORMAL);
SOCKET_IN_FLOAT(surface_mix_weight, "SurfaceMixWeight", 0.0f, SocketType::SVM_INTERNAL);
SOCKET_IN_FLOAT(sigma, "Sigma", 1.0f);
SOCKET_IN_FLOAT(roughness, "Roughness", 1.0f);
static NodeEnum distribution_enum;
distribution_enum.insert("ashikhmin", CLOSURE_BSDF_ASHIKHMIN_VELVET_ID);
distribution_enum.insert("microfiber", CLOSURE_BSDF_SHEEN_ID);
SOCKET_ENUM(distribution, "Distribution", distribution_enum, CLOSURE_BSDF_SHEEN_ID);
SOCKET_OUT_CLOSURE(BSDF, "BSDF");
return type;
}
VelvetBsdfNode::VelvetBsdfNode() : BsdfNode(get_node_type())
SheenBsdfNode::SheenBsdfNode() : BsdfNode(get_node_type())
{
closure = CLOSURE_BSDF_ASHIKHMIN_VELVET_ID;
closure = CLOSURE_BSDF_SHEEN_ID;
}
void VelvetBsdfNode::compile(SVMCompiler &compiler)
void SheenBsdfNode::compile(SVMCompiler &compiler)
{
BsdfNode::compile(compiler, input("Sigma"), NULL);
closure = distribution;
BsdfNode::compile(compiler, input("Roughness"), NULL);
}
void VelvetBsdfNode::compile(OSLCompiler &compiler)
void SheenBsdfNode::compile(OSLCompiler &compiler)
{
compiler.add(this, "node_velvet_bsdf");
compiler.parameter(this, "distribution");
compiler.add(this, "node_sheen_bsdf");
}
/* Diffuse BSDF Closure */

View File

@ -584,11 +584,17 @@ class TransparentBsdfNode : public BsdfNode {
}
};
class VelvetBsdfNode : public BsdfNode {
class SheenBsdfNode : public BsdfNode {
public:
SHADER_NODE_CLASS(VelvetBsdfNode)
SHADER_NODE_CLASS(SheenBsdfNode)
NODE_SOCKET_API(float, sigma)
NODE_SOCKET_API(float, roughness)
NODE_SOCKET_API(ClosureType, distribution)
ClosureType get_closure_type()
{
return distribution;
}
};
class GlossyBsdfNode : public BsdfNode {

View File

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Alpha (b'5aff5bc0e72b')\n"
"Project-Id-Version: Blender 4.0.0 Alpha (b'4f56261f768e')\n"
"Report-Msgid-Bugs-To: \n"
"\"POT-Creation-Date: 2019-02-25 20:41:30\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Alpha (b'5aff5bc0e72b')\n"
"Project-Id-Version: Blender 4.0.0 Alpha (b'4f56261f768e')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-17 12:39:59\n"
"POT-Creation-Date: 2023-07-24 15:42:18\n"
"PO-Revision-Date: 2016-04-23 22:41+0300\n"
"Last-Translator: Yousef Harfoush <bat3a@msn.com>\n"
"Language-Team: Yousef Harfoush, Amine Moussaoui <bat3a@msn.com>\n"
@ -2131,14 +2131,14 @@ msgid "Saturation"
msgstr "ﺰﻛﺮﻣ"
msgid "Outline"
msgstr "ﺭﺎﻃﺍ"
msgid "Active Layer"
msgstr "ﺔﻟﺎﻌّﻔﻟﺍ ﺔﻘﺒﻄﻟﺍ"
msgid "Outline"
msgstr "ﺭﺎﻃﺍ"
msgid "Background Image"
msgstr "ﺔﻴﻔﻠﺨﻟﺍ ﺓﺭﻮﺻ"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Alpha (b'5aff5bc0e72b')\n"
"Project-Id-Version: Blender 4.0.0 Alpha (b'4f56261f768e')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-17 12:39:59\n"
"POT-Creation-Date: 2023-07-24 15:42:18\n"
"PO-Revision-Date: \n"
"Last-Translator: Martin Tabačan <tabycz@gmail.com>\n"
"Language-Team: Taby <tabycz@gmail.com>\n"
@ -2786,6 +2786,10 @@ msgid "Factor of Simplify using adaptive algorithm"
msgstr "Faktor zjednodušení pomocí adaptivního algoritmu"
msgid "Active Layer"
msgstr "Aktivní vrstva"
msgid "Default Eraser"
msgstr "Výchozí guma"
@ -2830,10 +2834,6 @@ msgid "Use tablet pressure for color strength"
msgstr "Použít tlak tabletu pro sílu bravy"
msgid "Active Layer"
msgstr "Aktivní vrstva"
msgid "Object Path"
msgstr "Cesta k objektu"
@ -10200,6 +10200,10 @@ msgid "Sun Light"
msgstr "Slunečné světlo"
msgid "Smoother irradiance interpolation but introduce light bleeding"
msgstr "Hladší interpolace ozáření, ale zavede lehké krvácení"
msgid "Resolution X"
msgstr "Rozlišení X"
@ -36448,10 +36452,6 @@ msgid "Irradiance Smoothing"
msgstr "Vyhlazení ozáření"
msgid "Smoother irradiance interpolation but introduce light bleeding"
msgstr "Hladší interpolace ozáření, ale zavede lehké krvácení"
msgid "Size of the shadow map applied to each irradiance sample"
msgstr "Velikost stínové mapy použité pro každý vzorek ozáření"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Alpha (b'5aff5bc0e72b')\n"
"Project-Id-Version: Blender 4.0.0 Alpha (b'4f56261f768e')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-17 12:39:59\n"
"POT-Creation-Date: 2023-07-24 15:42:18\n"
"PO-Revision-Date: \n"
"Last-Translator: Martin Reininger <martinreininger@gmx.net>\n"
"Language-Team: German translation team\n"
@ -3814,6 +3814,10 @@ msgid "Factor of Simplify using adaptive algorithm"
msgstr "Faktor der Vereinfachung mit adaptivem Algorithmus"
msgid "Active Layer"
msgstr "Aktive Ebene"
msgid "Default Eraser"
msgstr "Standard Radierer"
@ -4010,10 +4014,6 @@ msgid "Cache Layers"
msgstr "Cache-Ebenen"
msgid "Active Layer"
msgstr "Aktive Ebene"
msgid "Object Path"
msgstr "Objektpfad"
@ -26087,10 +26087,6 @@ msgid "Transparent BSDF"
msgstr "Transparent"
msgid "Velvet BSDF"
msgstr "Samt BSDF"
msgid "Bump"
msgstr "Bump (Relief)"
@ -64026,10 +64022,6 @@ msgid "Clearcoat Roughness"
msgstr "Klarlack-Rauheit"
msgid "Transmission Roughness"
msgstr "Transmission-Rauheit"
msgid "Emission Strength"
msgstr "Emissionsstärke"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Alpha (b'5aff5bc0e72b')\n"
"Project-Id-Version: Blender 4.0.0 Alpha (b'4f56261f768e')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-17 12:39:59\n"
"POT-Creation-Date: 2023-07-24 15:42:18\n"
"PO-Revision-Date: \n"
"Last-Translator: Gabriel Gazzán <gabcorreo@gmail.com>\n"
"Language-Team: Español <gabcorreo@gmail.com>\n"
@ -4403,6 +4403,10 @@ msgid "Factor of Simplify using adaptive algorithm"
msgstr "Factor de simplificación mediante un algoritmo adaptativo"
msgid "Active Layer"
msgstr "Capa activa"
msgid "Strokes Collision"
msgstr "Colisión de trazos"
@ -4643,10 +4647,6 @@ msgid "Collection of cache layers"
msgstr "Colección de capas del caché"
msgid "Active Layer"
msgstr "Capa activa"
msgid "Active layer of the CacheFile"
msgstr "Capa activa del archivo del caché"
@ -24455,6 +24455,10 @@ msgid "Number of ray directions to evaluate when baking"
msgstr "Cantidad de direcciones de rayos a ser evaluadas al capturar"
msgid "Smoother irradiance interpolation but introduce light bleeding"
msgstr "Permite obtener una interpolación más suave de la irradiación, pero introduce sangrado de luz"
msgid "Resolution X"
msgstr "Resolución X"
@ -46565,6 +46569,14 @@ msgid "Glossy refraction with sharp or microfacet distribution, typically used f
msgstr "Reflexión pulida con distribuciones definida o micro facetada, usada para materiales que transmiten luz"
msgid ""
"Reflection for materials such as cloth.\n"
"Typically mixed with other shaders (such as a Diffuse Shader) and is not particularly useful on its own"