Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee_next/eevee_material.cc
| Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name Material | /** \name Material | ||||
| * | * | ||||
| * \{ */ | * \{ */ | ||||
| MaterialModule::MaterialModule(Instance &inst) : inst_(inst) | MaterialModule::MaterialModule(Instance &inst) : inst_(inst) | ||||
| { | { | ||||
| { | { | ||||
| bNodeTree *ntree = ntreeAddTree(nullptr, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| diffuse_mat = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default diffuse"); | diffuse_mat = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default diffuse"); | ||||
| diffuse_mat->nodetree = ntree; | bNodeTree *ntree = ntreeAddTreeEmbedded( | ||||
| nullptr, &diffuse_mat->id, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| diffuse_mat->use_nodes = true; | diffuse_mat->use_nodes = true; | ||||
| /* To use the forward pipeline. */ | /* To use the forward pipeline. */ | ||||
| diffuse_mat->blend_method = MA_BM_BLEND; | diffuse_mat->blend_method = MA_BM_BLEND; | ||||
| bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_DIFFUSE); | bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_DIFFUSE); | ||||
| bNodeSocket *base_color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | bNodeSocket *base_color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | ||||
| copy_v3_fl(((bNodeSocketValueRGBA *)base_color->default_value)->value, 0.8f); | copy_v3_fl(((bNodeSocketValueRGBA *)base_color->default_value)->value, 0.8f); | ||||
| bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | ||||
| nodeAddLink(ntree, | nodeAddLink(ntree, | ||||
| bsdf, | bsdf, | ||||
| nodeFindSocket(bsdf, SOCK_OUT, "BSDF"), | nodeFindSocket(bsdf, SOCK_OUT, "BSDF"), | ||||
| output, | output, | ||||
| nodeFindSocket(output, SOCK_IN, "Surface")); | nodeFindSocket(output, SOCK_IN, "Surface")); | ||||
| nodeSetActive(ntree, output); | nodeSetActive(ntree, output); | ||||
| } | } | ||||
| { | { | ||||
| bNodeTree *ntree = ntreeAddTree(nullptr, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| glossy_mat = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default metal"); | glossy_mat = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default metal"); | ||||
| glossy_mat->nodetree = ntree; | bNodeTree *ntree = ntreeAddTreeEmbedded( | ||||
| nullptr, &glossy_mat->id, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| glossy_mat->use_nodes = true; | glossy_mat->use_nodes = true; | ||||
| /* To use the forward pipeline. */ | /* To use the forward pipeline. */ | ||||
| glossy_mat->blend_method = MA_BM_BLEND; | glossy_mat->blend_method = MA_BM_BLEND; | ||||
| bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_GLOSSY); | bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_BSDF_GLOSSY); | ||||
| bNodeSocket *base_color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | bNodeSocket *base_color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | ||||
| copy_v3_fl(((bNodeSocketValueRGBA *)base_color->default_value)->value, 1.0f); | copy_v3_fl(((bNodeSocketValueRGBA *)base_color->default_value)->value, 1.0f); | ||||
| bNodeSocket *roughness = nodeFindSocket(bsdf, SOCK_IN, "Roughness"); | bNodeSocket *roughness = nodeFindSocket(bsdf, SOCK_IN, "Roughness"); | ||||
| ((bNodeSocketValueFloat *)roughness->default_value)->value = 0.0f; | ((bNodeSocketValueFloat *)roughness->default_value)->value = 0.0f; | ||||
| bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | ||||
| nodeAddLink(ntree, | nodeAddLink(ntree, | ||||
| bsdf, | bsdf, | ||||
| nodeFindSocket(bsdf, SOCK_OUT, "BSDF"), | nodeFindSocket(bsdf, SOCK_OUT, "BSDF"), | ||||
| output, | output, | ||||
| nodeFindSocket(output, SOCK_IN, "Surface")); | nodeFindSocket(output, SOCK_IN, "Surface")); | ||||
| nodeSetActive(ntree, output); | nodeSetActive(ntree, output); | ||||
| } | } | ||||
| { | { | ||||
| bNodeTree *ntree = ntreeAddTree(nullptr, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| error_mat_ = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default error"); | error_mat_ = (::Material *)BKE_id_new_nomain(ID_MA, "EEVEE default error"); | ||||
| error_mat_->nodetree = ntree; | bNodeTree *ntree = ntreeAddTreeEmbedded( | ||||
| nullptr, &error_mat_->id, "Shader Nodetree", ntreeType_Shader->idname); | |||||
| error_mat_->use_nodes = true; | error_mat_->use_nodes = true; | ||||
| /* Use emission and output material to be compatible with both World and Material. */ | /* Use emission and output material to be compatible with both World and Material. */ | ||||
| bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_EMISSION); | bNode *bsdf = nodeAddStaticNode(nullptr, ntree, SH_NODE_EMISSION); | ||||
| bNodeSocket *color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | bNodeSocket *color = nodeFindSocket(bsdf, SOCK_IN, "Color"); | ||||
| copy_v3_fl3(((bNodeSocketValueRGBA *)color->default_value)->value, 1.0f, 0.0f, 1.0f); | copy_v3_fl3(((bNodeSocketValueRGBA *)color->default_value)->value, 1.0f, 0.0f, 1.0f); | ||||
| bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_MATERIAL); | ||||
| ▲ Show 20 Lines • Show All 185 Lines • Show Last 20 Lines | |||||