[Bf-blender-cvs] [ae2d58f443c] soc-2018-npr: Adding LANPR structures. makesrna fails, very weird.

Nick Wu noreply at git.blender.org
Wed Jun 20 10:00:02 CEST 2018


Commit: ae2d58f443c27d3843ca0944dbb177b09f92ca7e
Author: Nick Wu
Date:   Wed Jun 20 15:59:26 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBae2d58f443c27d3843ca0944dbb177b09f92ca7e

Adding LANPR structures. makesrna fails, very weird.

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

M	release/scripts/startup/bl_ui/properties_scene.py
M	source/blender/CMakeLists.txt
M	source/blender/draw/CMakeLists.txt
M	source/blender/draw/engines/lanpr/lanpr_all.h
M	source/blender/draw/engines/lanpr/lanpr_software_render.c
M	source/blender/makesdna/DNA_lanpr_types.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/CMakeLists.txt
M	source/blender/makesrna/intern/makesrna.c
M	source/blender/makesrna/intern/rna_internal.h
M	source/blender/makesrna/intern/rna_lanpr.c
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 80e3e837f20..5ebe8858ce0 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -474,6 +474,16 @@ class SCENE_PT_viewport_display(SceneButtonsPanel, Panel):
         col.prop(scene.display, "light_direction")
         col.prop(scene.display, "shadow_shift")
 
+class LANPR_linesets(UIList):
+    def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
+        lineset = item
+        if self.layout_type in {'DEFAULT', 'COMPACT'}:
+            layout.prop(lineset, "thickness", text="", emboss=False, icon_value=icon)
+            #layout.prop(lineset, "show_render", text="", index=index)
+        elif self.layout_type == 'GRID':
+            layout.alignment = 'CENTER'
+            layout.label("", icon_value=icon)
+
 class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
     COMPAT_ENGINES = {'BLENDER_CLAY'}
     bl_label = "LANPR AHOY"
@@ -619,6 +629,10 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
             
             else: #disabled vectorization
                 layout.label(text="Adjust values to avoid large pure white regions!")
+
+        row = layout.row()
+        rows = 4 if lineset else 2
+        layout.LANPR_linesets("RENDERLAYER_UL_linesets", "", lanpr, "layers", lanpr.layers, "active_index", rows=rows)
                 
 
 
diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt
index 5709ac723f4..3dffadd5584 100644
--- a/source/blender/CMakeLists.txt
+++ b/source/blender/CMakeLists.txt
@@ -92,6 +92,7 @@ set(SRC_DNA_INC
 	${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_movieclip_types.h
 	${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_tracking_types.h
 	${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_mask_types.h
+	${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_lanpr_types.h
 )
 
 add_subdirectory(datatoc)
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index b0a9160c9de..3ec1200f75f 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -117,14 +117,10 @@ set(SRC
 	engines/workbench/solid_mode.c
 	engines/workbench/transparent_mode.c
 	engines/external/external_engine.c
-	#engines/lanpr/NUL_TNS_Kernel.c
-	#engines/lanpr/NUL_Util.c
-	#engines/lanpr/NUL_TNS_SoftwareRender.c
-    #engines/lanpr/NUL_TNS_EdgeRendering.c
-    #engines/lanpr/NUL_TNS_Mesh.c
 	engines/lanpr/lanpr_dpix.c
 	engines/lanpr/lanpr_engine.c
 	engines/lanpr/lanpr_snake.c
+	engines/lanpr/lanpr_software_render.c
 
 	DRW_engine.h
 	intern/DRW_render.h
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h b/source/blender/draw/engines/lanpr/lanpr_all.h
index f1cde2176cf..6d0cfc9b87a 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -224,14 +224,14 @@ typedef struct tnsRenderTaskInfo {
 
 /* Below ported from NUL_TNS.h */
 
-struct LANPR_RenderBuffer {
-	LANPR_RenderBuffer *prev, *next;
+typedef struct LANPR_RenderBuffer {
+	struct LANPR_RenderBuffer *prev, *next;
 
-	nSafeString*       Name;
+	//nSafeString*       Name;
 
-	tnsFrameBuffer*    FrameBuffer;
+	//tnsFrameBuffer*    FrameBuffer;
 
-	tnsBoundingArea*   InitialBoundingAreas;
+	//tnsBoundingArea*   InitialBoundingAreas;
 	//u32bit             BoundingAreaCount;
 	//u32bit             BaVBO;
 	//u32bit           BaFillVBO;
@@ -244,7 +244,7 @@ struct LANPR_RenderBuffer {
 	//nListHandle     IntersectingVertexBuffer;
 
     /* BLI_xx equ? */
-	nStaticMemoryPool  RenderDataPool;
+	//nStaticMemoryPool  RenderDataPool;
 
 	//render status
 
@@ -254,22 +254,22 @@ struct LANPR_RenderBuffer {
 
 	u32bit          ContourCount;
 	u32bit          ContourProcessed;
-	nListItemPointer* ContourManaged;
+	//nListItemPointer* ContourManaged;
 	ListBase        Contours;
 
 	u32bit          IntersectionCount;
 	u32bit          IntersectionProcessed;
-	nListItemPointer* IntersectionManaged;
+	//nListItemPointer* IntersectionManaged;
 	ListBase        IntersectionLines;
 
 	u32bit          CreaseCount;
 	u32bit          CreaseProcessed;
-	nListItemPointer* CreaseManaged;
+	//nListItemPointer* CreaseManaged;
 	ListBase        CreaseLines;
 
 	u32bit          MaterialLineCount;
 	u32bit          MaterialProcessed;
-	nListItemPointer* MaterialManaged;
+	//nListItemPointer* MaterialManaged;
 	ListBase        MaterialLines;
 
 	//CRITICAL_SECTION csInfo;
@@ -309,6 +309,101 @@ struct LANPR_RenderBuffer {
 }LANPR_RenderBuffer;
 
 
+#define TNS_CULL_DISCARD 2
+#define TNS_CULL_USED    1
+
+typedef struct LANPR_RenderTriangle {
+	Link              Item;
+	struct LANPR_RenderVert* V[3];
+	struct LANPR_RenderLine* RL[3];
+	real              GN[3];
+	real              GC[3];
+	struct BMFace*           F;
+	ListBase          IntersectingVerts;
+	char              CullStatus;
+	struct LANPR_RenderLine* Testing;	//Should Be tRT** Testing[NumOfThreads]
+}LANPR_RenderTriangle;
+
+typedef struct LANPR_RenderTriangleThread {
+	struct LANPR_RenderTriangle Base;
+	struct LANPR_RenderLine*    Testing[128]; //max thread support;
+}LANPR_RenderTriangleThread;
+
+typedef struct LANPR_RenderElementLinkNode {
+	Link      Item;
+	void*     Pointer;
+	int       ElementCount;
+	void*     ObjectRef;
+	char      Additional;
+}LANPR_RenderElementLinkNode;
+
+typedef struct LANPR_tnsRenderLineSegment {
+	Link      Item;
+	//real     Begin, End;  // 0->At[L] 1->At[R]
+	real      at;
+	u8bit     OccludeLevel;//after
+	int       PreviewIndex;
+}LANPR_tnsRenderLineSegment;
+
+struct LANPR_RenderVert{
+	Link   Item;
+	real GLocation[4];
+	real FrameBufferCoord[4];
+	int FrameBufferCoordi[2];
+	struct BMVert*    V;           //Used As R When Intersecting
+	struct LANPR_RenderLine*     IntersectingLine;
+	struct LANPR_RenderVert*     IntersectintLine2;
+	struct LANPR_RenderTriangle* IntersectWith;     //   Positive 1         Negative 0
+	//tnsRenderTriangle* IntersectingOnFace;       //         <|               |>
+	char        Positive;             //                 L---->|----->R	 L---->|----->R
+	char        EdgeUsed;             //                      <|		       |>
+}LANPR_RenderVert;
+
+typedef struct LANPR_RenderLine {
+	Link            Item;
+	struct LANPR_RenderVert *L, *R;
+	struct LANPR_RenderTriangle *TL, *TR;
+	ListBase        Segments;
+	//tnsEdge*       Edge;//should be edge material
+	//tnsRenderTriangle* Testing;//Should Be tRT** Testing[NumOfThreads]
+	char            MinOcclude;
+	struct Object*         ObjectRef;
+	//char            IgnoreConnectedFace;
+	//char            CullStatus;
+}LANPR_RenderLine;
+
+typedef struct LANPR_BoundingArea {
+	real        L, R, U, B;
+	real        CX, CY;
+	
+	struct LANPR_BoundingArea* Child;//1,2,3,4 quadrant
+
+	ListBase    LP;
+	ListBase    RP;
+	ListBase    UP;
+	ListBase    BP;
+
+	int         TriangleCount;
+	ListBase    AssociatedTriangles;
+}LANPR_BoundingArea;
+
+typedef struct LANPR_RenderSubPixel {
+	real                  Depth;
+	struct LANPR_RenderTriangle* BelongTo;
+	real                  Weight[3];  //belongto->vp 1 2 3
+}LANPR_RenderSubPixel;
+
+typedef struct LANPR_RenderTile {
+	int                Row, Column;
+	int                SubX, SubY, SubXLim, SubYLim;//lower Left Corner As 0
+	real               FX, FY, FXLim, FYLim;  //ratio;
+	//LANPR_RenderSubPixel* FirstPixel;            //lower Left Corner As 0
+	ListBase           AssociatedTriangles;   //lstptrs
+	ListBase           AssociatedLines;       //lstptrs
+	char               Rendered;
+}LANPR_RenderTile;
+
+
 extern RenderEngineType DRW_engine_viewport_lanpr_type;
 
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_software_render.c b/source/blender/draw/engines/lanpr/lanpr_software_render.c
index 9986b922af2..5bb95371509 100644
--- a/source/blender/draw/engines/lanpr/lanpr_software_render.c
+++ b/source/blender/draw/engines/lanpr/lanpr_software_render.c
@@ -1,8 +1,30 @@
-#include "NUL4.h"
-#include "NUL_Util.h"
-#include "NUL_TNS.h"
-#include "tinycthread.h"
-#include "png.h"
+#include "DRW_engine.h"
+#include "DRW_render.h"
+#include "BLI_listbase.h"
+#include "BLI_linklist.h"
+#include "lanpr_all.h"
+#include "DRW_render.h"
+#include "BKE_object.h"
+#include "DNA_mesh_types.h"
+#include "DNA_camera_types.h"
+#include "GPU_immediate.h"
+#include "GPU_immediate_util.h"
+#include "GPU_framebuffer.h"
+#include "DNA_lanpr_types.h"
+#include "DNA_meshdata_types.h"
+#include "BKE_customdata.h"
+#include "DEG_depsgraph_query.h"
+#include "GPU_draw.h"
+
+#include "GPU_batch.h"
+#include "GPU_framebuffer.h"
+#include "GPU_shader.h"
+#include "GPU_uniformbuffer.h"
+#include "GPU_viewport.h"
+#include "bmesh.h"
+
+#include "WM_types.h"
+#include "WM_api.h"
 
 #include <math.h>
 
@@ -14,131 +36,19 @@ Author(s):WuYiming - xp8110 at outlook.com
 
 */
 
-void lanpr_make_render_buffers_recursive(tns3DObject* o,real* MVMat,real* MVPMat,tnsRenderBuffer* rb, real HeightMultiply){
-	tns3DObject* oc;
-	tnsMeshObject* mo;
-	tnsVert* v;
-	tnsFace* f;
-	tnsEdge* e;
-	tnsRenderTriangle* rt;
-	tnsMatrix44d NewMVP;
-	tnsMatrix44d NewMV;
-	tnsFrameBuffer* fb = rb->FrameBuffer;
-	tnsRenderElementLinkNode* reln;
-	tnsCamera* c = rb->Scene->ActiveCamera;
-	tnsMaterial* m;
-
-	//if (o->RenderTriangles) FreeMem(o->RenderTriangles);
-	//if (o->RenderVertices) FreeMem(o->RenderVertices);
-
-	tMatMultiply44d(NewMVP, MVPMat, o->SelfTransform);
-	tMatMultiply44d(NewMV, MVMat, o->SelfTransform);
-
-	if (o->Type == TNS_OBJECT_MESH) {
-		mo = o;
-		o->RenderVertices = CreateNewBuffer(tnsRenderVert, mo->numV);
-		o->RenderTriangles = calloc(mo->TriangleCount, rb->TriangleSize);//CreateNewBuffer(tnsRenderTriangle, mo->TriangleCount);
-		//o->RenderLines = CreateNewBuffer(tnsRenderLine, mo->TriangulatedEdgeCount);
-
-		reln = lstAppendPointerStaticSized(&rb->VertexBufferPointers, &rb->RenderDataPool, o->RenderVertices,
-			sizeof(tnsRenderElementLinkNode));
-		reln->ElementCount = mo->numV;
-		reln->ObjectRef = mo;
-
-		reln = lstAppendPointerStaticSized(&rb->TriangleBufferPointers, &rb->RenderDataPool, o->RenderTriangles,
-			sizeof(tnsRenderElementLinkNode));
-		reln->ElementCount = mo

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list