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 - [email protected]
 
 */
 
-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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to