Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-11-08 00:16:03 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-11-08 00:16:13 +0300
commitbdd44564c9c1e22396fc8e30b6b6d831add02b56 (patch)
treef968b2a07d94e633bb8d38728deeb912d0bcb77b /source/blender/gpu
parent4f709152f4f0140a03edd69c1a501dbd5cec4b55 (diff)
GPU: Cleanups: Remove GPUMatType, Vectorize / MADD some operations
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/GPU_material.h6
-rw-r--r--source/blender/gpu/intern/gpu_material.c8
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl16
3 files changed, 9 insertions, 21 deletions
diff --git a/source/blender/gpu/GPU_material.h b/source/blender/gpu/GPU_material.h
index 265ba15dc39..737093ddffc 100644
--- a/source/blender/gpu/GPU_material.h
+++ b/source/blender/gpu/GPU_material.h
@@ -117,11 +117,6 @@ typedef enum GPUBuiltin {
GPU_BARYCENTRIC_DIST = (1 << 20),
} GPUBuiltin;
-typedef enum GPUMatType {
- GPU_MATERIAL_TYPE_MESH = 1,
- GPU_MATERIAL_TYPE_WORLD = 2,
-} GPUMatType;
-
typedef enum GPUMatFlag {
GPU_MATFLAG_DIFFUSE = (1 << 0),
GPU_MATFLAG_GLOSSY = (1 << 1),
@@ -187,7 +182,6 @@ void GPU_material_free(struct ListBase *gpumaterial);
void GPU_materials_free(struct Main *bmain);
struct Scene *GPU_material_scene(GPUMaterial *material);
-GPUMatType GPU_Material_get_type(GPUMaterial *material);
struct GPUPass *GPU_material_get_pass(GPUMaterial *material);
struct ListBase *GPU_material_get_inputs(GPUMaterial *material);
GPUMaterialStatus GPU_material_status(GPUMaterial *mat);
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index fa267102088..1002e6f483c 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -70,9 +70,6 @@ struct GPUMaterial {
Scene *scene; /* DEPRECATED was only useful for lamps */
Material *ma;
- /* material for mesh surface, worlds or something else.
- * some code generation is done differently depending on the use case */
- int type; /* DEPRECATED */
GPUMaterialStatus status;
const void *engine_type; /* attached engine type */
@@ -228,11 +225,6 @@ Scene *GPU_material_scene(GPUMaterial *material)
return material->scene;
}
-GPUMatType GPU_Material_get_type(GPUMaterial *material)
-{
- return material->type;
-}
-
GPUPass *GPU_material_get_pass(GPUMaterial *material)
{
return material->pass;
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 1cc431fd89e..0817a0311d4 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -204,7 +204,7 @@ void point_transform_m4v3(vec3 vin, mat4 mat, out vec3 vout)
void point_texco_remap_square(vec3 vin, out vec3 vout)
{
- vout = vec3(vin - vec3(0.5, 0.5, 0.5)) * 2.0;
+ vout = vin * 2.0 - 1.0;
}
void point_texco_clamp(vec3 vin, sampler2D ima, out vec3 vout)
@@ -1462,16 +1462,20 @@ void node_wireframe_screenspace(float size, vec2 barycentric, out float fac)
/* background */
-void background_transform_to_world(vec3 viewvec, out vec3 worldvec)
+void node_tex_environment_texco(vec3 viewvec, out vec3 worldvec)
{
+#ifdef MESH_SHADER
+ worldvec = worldPosition;
+#else
vec4 v = (ProjectionMatrix[3][3] == 0.0) ? vec4(viewvec, 1.0) : vec4(0.0, 0.0, 1.0, 1.0);
vec4 co_homogenous = (ProjectionMatrixInverse * v);
vec4 co = vec4(co_homogenous.xyz / co_homogenous.w, 0.0);
-#if defined(WORLD_BACKGROUND) || defined(PROBE_CAPTURE)
+# if defined(WORLD_BACKGROUND) || defined(PROBE_CAPTURE)
worldvec = (ViewMatrixInverse * co).xyz;
-#else
+# else
worldvec = (ModelViewMatrixInverse * co).xyz;
+# endif
#endif
}
@@ -2229,9 +2233,7 @@ void node_tex_image_box(vec3 texco,
float limit = 0.5 + 0.5 * blend;
vec3 weight;
- weight.x = N.x / (N.x + N.y);
- weight.y = N.y / (N.y + N.z);
- weight.z = N.z / (N.x + N.z);
+ weight = N.xyz / (N.xyx + N.yzz);
weight = clamp((weight - 0.5 * (1.0 - blend)) / max(1e-8, blend), 0.0, 1.0);
/* test for mixes between two textures */