Commit: e6821d3d27ba401e2aaaa1eff58fd86aa38c1b7c
Author: Nick Wu
Date:   Mon Jun 25 21:33:23 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBe6821d3d27ba401e2aaaa1eff58fd86aa38c1b7c

Drawing code moved in, but most parts need redo.

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

M       source/blender/draw/engines/lanpr/lanpr_all.h
M       source/blender/draw/engines/lanpr/lanpr_ops.c
M       source/blender/makesdna/DNA_lanpr_types.h

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h 
b/source/blender/draw/engines/lanpr/lanpr_all.h
index 32012b66fa3..31960875e30 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -238,6 +238,14 @@ typedef struct LANPR_Data {
 #define TNS_CALCULATION_OCCLUTION    4
 #define TNS_CALCULATION_FINISHED     100
 
+#define TNS_OVERRIDE_DISPLAY_NULL 0
+#define TNS_OVERRIDE_DISPLAY_SHOW 1
+#define TNS_OVERRIDE_DISPLAY_HIDE 2
+#define TNS_OVERRIDE_DISPLAY_SWAP 3
+
+#define NUL_LINE_WIDTH_WARNING_TOO_WIDE   1
+#define NUL_LINE_WIDTH_WARNING_TOO_THIN   2
+
 typedef struct LANPR_RenderTaskInfo {
        //thrd_t           ThreadHandle;
 
@@ -351,12 +359,12 @@ typedef struct LANPR_RenderBuffer {
 
        nListHandle DrawCommands;
 
-       //tnsRenderBufferPreviewNode RenderPreview[32];
+       //LANPR_RenderBufferPreviewNode RenderPreview[32];
 
        struct Scene *Scene;
        struct Object *Camera;
 
-       //tnsRenderTriangles are in mesh object.
+       //LANPR_RenderTriangles are in mesh object.
 }LANPR_RenderBuffer;
 
 
@@ -405,7 +413,7 @@ typedef struct LANPR_RenderVert {
        struct LANPR_RenderLine *IntersectingLine;
        struct LANPR_RenderLine *IntersectintLine2;
        struct LANPR_RenderTriangle *IntersectWith;     //   Positive 1         
Negative 0
-       //tnsRenderTriangle* IntersectingOnFace;       //         <|            
   |>
+       //LANPR_RenderTriangle* IntersectingOnFace;       //         <|         
      |>
        char Positive;                    //                 L---->|----->R     
 L---->|----->R
        char EdgeUsed;                    //                      <|            
       |>
 }LANPR_RenderVert;
@@ -416,7 +424,7 @@ typedef struct LANPR_RenderLine {
        struct LANPR_RenderTriangle *TL, *TR;
        nListHandle Segments;
        //tnsEdge*       Edge;//should be edge material
-       //tnsRenderTriangle* Testing;//Should Be tRT** Testing[NumOfThreads]
+       //LANPR_RenderTriangle* Testing;//Should Be tRT** Testing[NumOfThreads]
        char MinOcclude;
        struct Object *ObjectRef;
        //char            IgnoreConnectedFace;
@@ -444,15 +452,20 @@ typedef struct LANPR_RenderSubPixel {
        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
-       nListHandle AssociatedTriangles;          //lstptrs
-       nListHandle AssociatedLines;              //lstptrs
-       char Rendered;
-}LANPR_RenderTile;
+
+#define TNS_COMMAND_LINE     0
+#define TNS_COMMAND_MATERIAL 1
+#define TNS_COMMAND_EDGE     2
+
+
+#define TNS_TRANSPARENCY_DRAW_SIMPLE  0
+#define TNS_TRANSPARENCY_DRAW_LAYERED 1
+
+#define TNS_OVERRIDE_ONLY                     0
+#define TNS_OVERRIDE_EXCLUDE                  1
+//#define TNS_OVERRIDE_ALL_OTHERS_OUTSIDE_GROUP 2
+//#define TNS_OVERRIDE_ALL_OTHERS_IN_GROUP      3
+//#define TNS_OVERRIDE_ALL_OTHERS               4
 
 
 extern RenderEngineType DRW_engine_viewport_lanpr_type;
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c 
b/source/blender/draw/engines/lanpr/lanpr_ops.c
index ceedac9825d..e291a028b93 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -183,10 +183,6 @@ void lanpr_ConnectNewBoundingAreas(LANPR_RenderBuffer *rb, 
LANPR_BoundingArea *R
 void lanpr_AssociateTriangleWithBoundingArea(LANPR_RenderBuffer *rb, 
LANPR_BoundingArea *RootBoundingArea, LANPR_RenderTriangle *rt, real *LRUB, int 
Recursive);
 int lanpr_TriangleCalculateIntersectionsInTile(LANPR_RenderBuffer *rb, 
LANPR_RenderTriangle *rt, LANPR_BoundingArea *ba);
 
-int lanpr_GetRenderTriangleSize(LANPR_RenderBuffer *rb) {
-       return sizeof(LANPR_RenderTriangle) + (sizeof(LANPR_RenderLine *) * 
rb->ThreadCount);
-}
-
 void lanpr_SplitBoundingArea(LANPR_RenderBuffer *rb, LANPR_BoundingArea *Root) 
{
        LANPR_BoundingArea *ba = memStaticAquire(&rb->RenderDataPool, 
sizeof(LANPR_BoundingArea) * 4);
        LANPR_RenderTriangle *rt;
@@ -2508,11 +2504,361 @@ LANPR_RenderBuffer 
*lanpr_CreateRenderBuffer(SceneLANPR *lanpr) {
        return rb;
 }
 
+void lanpr_RebuildRenderDrawCommand(LANPR_RenderBuffer *rb, LANPR_LineStyle 
*rdc);
 
+int lanpr_DrawEdgePreview(LANPR_RenderBuffer *rb, LANPR_LineStyle 
*OverrideLayer, Collection *OverrideGroup,
+                          real ThicknessScale, RenderEngine *e, GPUFrameBuffer 
*Off) {
+       //too many errors. later....
+}
 
-void lanpr_generate_geom_buffer(struct Object *ob){
+int lanpr_GetRenderTriangleSize(LANPR_RenderBuffer *rb) {
+       return sizeof(LANPR_RenderTriangle) + (sizeof(LANPR_RenderLine *) * 
rb->ThreadCount);
+}
+
+static char Message[] = "Please fill in these fields before exporting image:";
+static char MessageFolder[] = "    - Output folder";
+static char MessagePrefix[] = "    - File name prefix";
+static char MessageConnector[] = "    - File name connector";
+static char MessageLayerName[] = "    - One or more layers have empty/illegal 
names.";
+static char MessageSuccess[] = "Sucessfully Saved Image(s).";
+static char MessageHalfSuccess[] = "Some image(s) failed to save.";
+static char MessageFailed[] = "No saving action performed.";
+
+//int ACTINV_SaveRenderBufferPreview(nActuatorIntern* a, nEvent* e) {
+//     LANPR_RenderBuffer* rb = a->This->EndInstance;
+//     LANPR_LineStyle* rdc;
+//     char FullPath[1024] = "";
+//
+//     if (!rb) return;
+//
+//     tnsFrameBuffer *fb = rb->FrameBuffer;
+//
+//     if (fb->OutputMode == TNS_OUTPUT_MODE_COMBINED) {
+//             if ((!fb->OutputFolder || !fb->OutputFolder->Ptr) || 
(!fb->ImagePrefix || !fb->ImagePrefix->Ptr)) {
+//                     nPanelMessageList List = {0};
+//                     nulAddPanelMessage(&List, Message);
+//                     if ((!fb->OutputFolder || !fb->OutputFolder->Ptr)) 
nulAddPanelMessage(&List, MessageFolder);
+//                     if ((!fb->ImagePrefix || !fb->ImagePrefix->Ptr)) 
nulAddPanelMessage(&List, MessagePrefix);
+//                     nulAddPanelMessage(&List, MessageFailed);
+//                     nulEnableMultiMessagePanel(a, 0, "Caution", &List, 
e->x, e->y, 500, e);
+//                     return NUL_FINISHED;
+//             }
+//             strcat(FullPath, fb->OutputFolder->Ptr);
+//             strcat(FullPath, fb->ImagePrefix->Ptr);
+//             lanpr_SaveRenderBufferPreviewAsImage(rb, FullPath, 0, 0);
+//     }elif(fb->OutputMode == TNS_OUTPUT_MODE_PER_LAYER) {
+//             nPanelMessageList List = { 0 };
+//             int unnamed = 0;
+//             if ((!fb->OutputFolder || !fb->OutputFolder->Ptr) || 
(!fb->ImagePrefix || !fb->ImagePrefix->Ptr)|| (!fb->ImageNameConnector || 
!fb->ImageNameConnector->Ptr)) {
+//                     nulAddPanelMessage(&List, Message);
+//                     if ((!fb->OutputFolder||!fb->OutputFolder->Ptr)) 
nulAddPanelMessage(&List, MessageFolder);
+//                     if ((!fb->ImagePrefix|| !fb->ImagePrefix->Ptr)) 
nulAddPanelMessage(&List, MessagePrefix);
+//                     if ((!fb->ImageNameConnector|| 
!fb->ImageNameConnector->Ptr)) nulAddPanelMessage(&List, MessageConnector);
+//                     nulAddPanelMessage(&List, MessageFailed);
+//                     nulEnableMultiMessagePanel(a, 0, "Caution", &List, 
e->x, e->y, 500, e);
+//                     return NUL_FINISHED;
+//             }
+//             for (rdc = lanpr->line_style_layers.pFirst; rdc; rdc = 
rdc->Item.pNext) {
+//                     FullPath[0] = 0;
+//                     if ((!rdc->Name || !rdc->Name->Ptr) && !unnamed) {
+//                             nulAddPanelMessage(&List, MessageHalfSuccess);
+//                             nulAddPanelMessage(&List, MessageLayerName);
+//                             unnamed = 1;
+//                             continue;
+//                     }
+//                     strcat(FullPath, fb->OutputFolder->Ptr);
+//                     strcat(FullPath, fb->ImagePrefix->Ptr);
+//                     strcat(FullPath, fb->ImageNameConnector->Ptr);
+//                     strcat(FullPath, rdc->Name->Ptr);
+//                     lanpr_SaveRenderBufferPreviewAsImage(rb, FullPath, rdc, 
0);
+//             }
+//             if(unnamed)nulEnableMultiMessagePanel(a, 0, "Caution", &List, 
e->x, e->y, 500, e);
+//     }
+//
+//     return NUL_FINISHED;
+//}
+//int ACTINV_SaveSingleLayer(nActuator* a, nEvent* e) {
+//     LANPR_LineStyle* rdc = a->This->EndInstance;
+//     char FullPath[1024] = "";
+//     int fail = 0;
+//
+//     if (!rdc)return;
+//
+//     tnsFrameBuffer* fb = rdc->ParentRB->FrameBuffer;
+//
+//     if (!fb) return;
+//
+//     nPanelMessageList List = { 0 };
+//
+//     if ((!fb->OutputFolder || !fb->OutputFolder->Ptr) || (!fb->ImagePrefix 
|| !fb->ImagePrefix->Ptr) || (!fb->ImageNameConnector || 
!fb->ImageNameConnector->Ptr)) {
+//             nulAddPanelMessage(&List, Message);
+//             if ((!fb->OutputFolder || !fb->OutputFolder->Ptr)) 
nulAddPanelMessage(&List, MessageFolder);
+//             if ((!fb->ImagePrefix || !fb->ImagePrefix->Ptr)) 
nulAddPanelMessage(&List, MessagePrefix);
+//             if ((!fb->ImageNameConnector || !fb->ImageNameConnector->Ptr)) 
nulAddPanelMessage(&List, MessageConnector);
+//             fail = 1;
+//     }
+//     if (!rdc->Name || !rdc->Name->Ptr) {
+//             nulAddPanelMessage(&List, MessageHalfSuccess);
+//             nulAddPanelMessage(&List, MessageLayerName);
+//             fail = 1;
+//     }
+//     if (fail) {
+//             nulAddPanelMessage(&List, MessageFailed);
+//             nulEnableMultiMessagePanel(a, 0, "Caution", &List, e->x, e->y, 
500, e);
+//             return NUL_FINISHED;
+//     }
+//
+//
+//     FullPath[0] = 0;
+//     strcat(FullPath, fb->OutputFolder->Ptr);
+//     strcat(FullPath, fb->ImagePrefix->Ptr);
+//     strcat(FullPath, fb->ImageNameConnector->Ptr);
+//     strcat(FullPath, rdc->Name->Ptr);
+//     lanpr_SaveRenderBufferPreviewAsImage(rdc->ParentRB, FullPath, rdc, 0);
+//
+//
+//     return NUL_FINISHED;
+//}
+
+
+
+long lanpr_CountLeveledEdgeSegmentCount(nListHandle *LineList, int 
OccludeLevel, Collection *OverrideGroup, int Exclusive) {
+       nListItemPointer *lip;
+       LANPR_RenderLine *rl;
+       LANPR_RenderLineSegment *rls;
+       Object *o;
+       int not = 0;
+       long Count = 0;
+       for (lip = LineList->pFirst; lip; lip = lip->pNext) {
+               rl = lip->p;
+               o = rl->ObjectRef;
+               for (rls = rl->Segments.pFirst; rls; rls = rls->Item.pNext) {
+                       if (OverrideGroup) {
+                               //if (CollectionHaveObject(OverrideGroup, 
rl->ObjectRef) && Exclusive) continue;
+                               //if (!CollectionHaveObject(OverrideGroup, 
rl->ObjectRef) && !Exclusive) continue;
+                       }
+                       if (rls->OccludeLevel == OccludeLevel) Count++;
+               }
+       }
+       return Count;
+}
+long lanpr_CountIntersectionSegmentCount(LANPR_RenderBuffer *rb) {
+       LANPR_RenderLine *rl;
+       LANPR_RenderLineSegment *rls;
+       long Count = 0;
+       for (rl = rb->IntersectionLines.pFirst; rl; rl = rl->Item.pNext) {
+               Count++;
+       }
+       return Count;
+}
+void *lanpr_MakeLeveledEdgeVertexArray(LANPR_RenderBuffer *rb, n

@@ 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