[Bf-blender-cvs] [ca4618bdbf] clay-engine: Apply changes GPU_texture change.

Clément Foucault noreply at git.blender.org
Mon Jan 9 15:07:55 CET 2017


Commit: ca4618bdbff4ff8d9f74318d9927bff8db3e2dd5
Author: Clément Foucault
Date:   Fri Jan 6 14:39:34 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBca4618bdbff4ff8d9f74318d9927bff8db3e2dd5

Apply changes GPU_texture change.

===================================================================

M	source/blender/draw/engines/clay/clay.c
M	source/blender/draw/intern/draw_manager.c
M	source/blender/gpu/intern/gpu_viewport.c

===================================================================

diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index 00e4fd66f6..0d8da2a165 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -87,6 +87,7 @@ typedef struct CLAY_PassList{
 } CLAY_PassList;
 
 /* Functions */
+
 static void add_icon_to_rect(PreviewImage *prv, float *final_rect, int layer)
 {
 	int image_size = prv->w[0] * prv->h[0];
@@ -139,7 +140,42 @@ static int matcap_to_index(int matcap)
 	else if (matcap == ICON_MATCAP_24) return 23;
 	return 0;
 }
+#if 0
+static GPUTexture *create_spiral_sample_texture(int numsaples)
+{
+	GPUTexture *tex;
+	float (*texels)[2] = MEM_mallocN(sizeof(float[2]) * numsaples, "concentric_tex");
+	const float numsaples_inv = 1.0f / numsaples;
+	int i;
+	/* arbitrary number to ensure we don't get conciding samples every circle */
+	const float spirals = 7.357;
+
+	for (i = 0; i < numsaples; i++) {
+		float r = (i + 0.5f) * numsaples_inv;
+		float phi = r * spirals * (float)(2.0 * M_PI);
+		texels[i][0] = r * cosf(phi);
+		texels[i][1] = r * sinf(phi);
+	}
 
+	tex = GPU_texture_create_1D_procedural(numsaples, (float *)texels, NULL);
+	MEM_freeN(texels);
+	return tex;
+}
+
+static GPUTexture * create_jitter_texture(void)
+{
+	float jitter[64 * 64][2];
+	int i;
+
+	for (i = 0; i < 64 * 64; i++) {
+		jitter[i][0] = 2.0f * BLI_frand() - 1.0f;
+		jitter[i][1] = 2.0f * BLI_frand() - 1.0f;
+		normalize_v2(jitter[i]);
+	}
+
+	return GPU_texture_create_2D_procedural(64, 64, &jitter[0][0], true, NULL);
+}
+#endif
 static void clay_engine_init(void)
 {
 	static bool done = false;
@@ -179,7 +215,11 @@ static void clay_engine_init(void)
 
 		load_matcaps(prv, 24);
 	}
-
+#if 0
+	/* AO Textures */
+	data.random_tx = 
+	data.random_tx = 
+#endif
 	/* Depth prepass */
 	data.depth_sh = DRW_shader_create_3D_depth_only();
 
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index ccd5ec1217..ccae2b5651 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -128,7 +128,7 @@ static bool fs_quad_init = false;
 
 GPUTexture *DRW_texture_create_2D_array(int w, int h, int d, const float *fpixels)
 {
-	return GPU_texture_create_2D_array(w, h, d, fpixels);
+	return GPU_texture_create_2D_array(w, h, d, fpixels, NULL);
 }
 
 void DRW_texture_free(GPUTexture *tex)
@@ -417,7 +417,8 @@ static void draw_batch(DRWBatch *batch, const bool fullscreen)
 			case DRW_UNIFORM_BUFFER:
 				/* restore index from lenght we abused */
 				GPU_texture_bind(DST.current_txl->textures[uni->length], uni->bindloc);
-				GPU_texture_filter_mode(DST.current_txl->textures[uni->length], false, false);
+				GPU_texture_compare_mode(DST.current_txl->textures[uni->length], false);
+				GPU_texture_filter_mode(DST.current_txl->textures[uni->length], false);
 				
 				bound_tex = MEM_callocN(sizeof(DRWBoundTexture), "DRWBoundTexture");
 				bound_tex->tex = DST.current_txl->textures[uni->length];
@@ -595,10 +596,11 @@ void DRW_framebuffer_init(struct GPUFrameBuffer **fb, int width, int height, DRW
 				if (fbotex.format == DRW_BUF_DEPTH_16 ||
 					fbotex.format == DRW_BUF_DEPTH_24) {
 					*fbotex.tex = GPU_texture_create_depth(width, height, NULL);
-					GPU_texture_filter_mode(*fbotex.tex, false, false);
+					GPU_texture_compare_mode(*fbotex.tex, false);
+					GPU_texture_filter_mode(*fbotex.tex, false);
 				}
 				else {
-					*fbotex.tex = GPU_texture_create_2D(width, height, NULL, GPU_HDR_NONE, NULL);
+					*fbotex.tex = GPU_texture_create_2D(width, height, NULL, NULL);
 					++color_attachment;
 				}
 			}
@@ -643,7 +645,6 @@ void DRW_viewport_init(const bContext *C, void **buffers, void **textures, void
 
 	/* Save context for all later needs */
 	DST.context = C;
-
 	GPU_viewport_get_engine_data(viewport, buffers, textures, passes);
 
 	/* Refresh DST.size */
@@ -687,6 +688,4 @@ void DRW_engines_free(void)
 	clay_engine_free();
 
 	BLI_remlink(&R_engines, &viewport_clay_type);
-}
-
-/* TODO Free memory */
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index 1fbf8bfe7b..1f09552149 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -105,7 +105,7 @@ void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect)
 
 		/* Color */
 		/* No multi samples for now */
-		viewport->txl->color = GPU_texture_create_2D(rect_w, rect_h, NULL, GPU_HDR_NONE, NULL);
+		viewport->txl->color = GPU_texture_create_2D(rect_w, rect_h, NULL, NULL);
 		if (!viewport->txl->color) {
 			GPU_viewport_free(viewport);
 			return;




More information about the Bf-blender-cvs mailing list