Blender Internal: Correct GLSL preview, material using shader nodes didn't consider "Transparency" is a shader pipeline option.
This commit is contained in:
parent
63ccb26303
commit
6489c1f94d
|
@ -1381,7 +1381,7 @@ void GPU_shadeinput_set(GPUMaterial *mat, Material *ma, GPUShadeInput *shi)
|
|||
GPU_link(mat, "set_rgb", GPU_uniform(&ma->specr), &shi->specrgb);
|
||||
GPU_link(mat, "shade_norm", GPU_builtin(GPU_VIEW_NORMAL), &shi->vn);
|
||||
|
||||
if (ma->mode & MA_TRANSP)
|
||||
if (mat->alpha)
|
||||
GPU_link(mat, "set_value", GPU_uniform(&ma->alpha), &shi->alpha);
|
||||
else
|
||||
GPU_link(mat, "set_value", GPU_uniform(&one), &shi->alpha);
|
||||
|
@ -1413,9 +1413,6 @@ void GPU_shaderesult_set(GPUShadeInput *shi, GPUShadeResult *shr)
|
|||
|
||||
do_material_tex(shi);
|
||||
|
||||
if ((ma->mode & MA_TRANSP) && (ma->mode & MA_ZTRANSP))
|
||||
GPU_material_enable_alpha(mat);
|
||||
|
||||
if ((mat->scene->gm.flag & GAME_GLSL_NO_LIGHTS) || (ma->mode & MA_SHLESS)) {
|
||||
GPU_link(mat, "set_rgb", shi->rgb, &shr->diff);
|
||||
GPU_link(mat, "set_rgb_zero", &shr->spec);
|
||||
|
@ -1488,7 +1485,7 @@ void GPU_shaderesult_set(GPUShadeInput *shi, GPUShadeResult *shr)
|
|||
GPU_uniform(&world->horr), &shr->combined);
|
||||
}
|
||||
|
||||
if (!((ma->mode & MA_TRANSP) && (ma->mode & MA_ZTRANSP))) {
|
||||
if (!mat->alpha) {
|
||||
if (world && (GPU_link_changed(shr->alpha) || ma->alpha != 1.0f))
|
||||
GPU_link(mat, "shade_world_mix", GPU_uniform(&world->horr),
|
||||
shr->combined, &shr->combined);
|
||||
|
@ -1583,6 +1580,10 @@ GPUMaterial *GPU_material_from_blender(Scene *scene, Material *ma)
|
|||
mat = GPU_material_construct_begin(ma);
|
||||
mat->scene = scene;
|
||||
|
||||
/* render pipeline option */
|
||||
if (ma->mode & MA_TRANSP)
|
||||
GPU_material_enable_alpha(mat);
|
||||
|
||||
if (!(scene->gm.flag & GAME_GLSL_NO_NODES) && ma->nodetree && ma->use_nodes) {
|
||||
/* create nodes */
|
||||
ntreeGPUMaterialNodes(ma->nodetree, mat);
|
||||
|
|
Loading…
Reference in New Issue