Commit: fd2036333b7fdc978bdd5c363a1642e2f58826d0
Author: Nick Wu
Date:   Tue Jun 26 14:03:52 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBfd2036333b7fdc978bdd5c363a1642e2f58826d0

redo-ing draw code for offline rendering

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

M       source/blender/draw/engines/lanpr/lanpr_all.h
M       source/blender/draw/engines/lanpr/lanpr_ops.c
M       source/blender/editors/render/render_intern.h
M       source/blender/editors/render/render_ops.c
M       source/blender/makesdna/DNA_lanpr_types.h
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_lanpr.c
M       source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h 
b/source/blender/draw/engines/lanpr/lanpr_all.h
index b6d24e044ca..6c6c921b7dc 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -323,6 +323,11 @@ typedef struct LANPR_RenderBuffer {
        nListItemPointer *MaterialManaged;
        nListHandle MaterialLines;
 
+       u32bit EdgeMarkCount;
+       u32bit EdgeMarkProcessed;
+       nListItemPointer *EdgeMarkManaged;
+       nListHandle EdgeMarks;
+
        SpinLock csInfo;
        SpinLock csData;
        SpinLock csManagement;
@@ -349,7 +354,7 @@ typedef struct LANPR_RenderBuffer {
        int ShowMaterial;
        int OverrideDisplay;
 
-       nListHandle DrawCommands;
+       //nListHandle DrawCommands; /* not used now */
 
        //tnsRenderBufferPreviewNode RenderPreview[32];
 
@@ -459,71 +464,10 @@ typedef struct LANPR_RenderSubPixel {
 //#define TNS_OVERRIDE_ALL_OTHERS_IN_GROUP      3
 //#define TNS_OVERRIDE_ALL_OTHERS               4
 
-typedef struct LANPR_RenderDrawCommand {
-       nListItem           Item;
-       LANPR_RenderBuffer* ParentRB;
-
-       int              Type;
-
-       nSafeString*     Name;
-
-       tnsVector4d Color;
-       real        Thickness;
-       int         OccludeBegin, OccludeEnd;
-
-       int         UseStipple;
-       u16bit      StipplePattern;
-       u8bit       StippleSize;
-       int         DrawThisCommand;
-
-       int         DrawContour;
-       int         DrawCrease;
-       int         DrawIntersections;
-       int         DrawMaterialLines;
-
-       GLuint      VBO;
-       GLuint      NBO;
-       int         VertCount;
-
-       int          OverrideColor;
-       Material*    MaterialRef;
-       nSafeString* ReadMaterialName;
-
-       Collection*  OverrideGroup; // I'll correct the name to "collection" 
later.
-       nSafeString* ReadGroupName;
-       int          ExcludeGroup;
-
-       real         NormalEdgeClamp;
-       real         NormalEdgeStrength;
-       real         DepthEdgeClamp;
-       real         DepthEdgeStrength;
-
-       int          ClearDepthBuffer;
-       
-       int          DepthTest;
-
-       int          TransparencyMode;
-       real         Transparency;
-}LANPR_RenderDrawCommand;
-
-
 extern RenderEngineType DRW_engine_viewport_lanpr_type;
 
 
 
-#define LANPR_MASTER_MODE_DPIX         0
-#define LANPR_MASTER_MODE_SNAKE        1
-
-#define LANPR_POST_PROCESSING_DISABLED 0
-#define LANPR_POST_PROCESSING_ENABLED  1
-
-#define LANPR_USE_DIFFERENT_TAPER      0
-#define LANPR_USE_SAME_TAPER           1
-
-#define LANPR_DISABLE_TIP_EXTEND       0
-#define LANPR_ENABLE_TIP_EXTEND        1
-
-
 #define tnsLinearItp(L, R, T) \
        ((L) * (1.0f - (T)) + (R)*(T))
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c 
b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 92c6c87c925..da5d2f7ea28 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -17,6 +17,7 @@
 #include "BKE_customdata.h"
 #include "DEG_depsgraph_query.h"
 #include "BKE_camera.h"
+#include "BKE_collection.h"
 #include "GPU_draw.h"
 
 #include "GPU_batch.h"
@@ -2504,7 +2505,7 @@ LANPR_RenderBuffer *lanpr_CreateRenderBuffer(SceneLANPR 
*lanpr) {
        return rb;
 }
 
-void lanpr_RebuildRenderDrawCommand(LANPR_RenderBuffer *rb, LANPR_LineLayer 
*rdc);
+void lanpr_RebuildRenderDrawCommand(LANPR_RenderBuffer *rb, LANPR_LineLayer 
*ll);
 
 int lanpr_DrawEdgePreview(LANPR_RenderBuffer *rb, LANPR_LineLayer 
*OverrideLayer, Collection *OverrideGroup,
                           real ThicknessScale, RenderEngine *e, GPUFrameBuffer 
*Off) {
@@ -2526,7 +2527,7 @@ static char MessageFailed[] = "No saving action 
performed.";
 
 //int ACTINV_SaveRenderBufferPreview(nActuatorIntern* a, nEvent* e) {
 //     LANPR_RenderBuffer* rb = a->This->EndInstance;
-//     LANPR_LineStyle* rdc;
+//     LANPR_LineStyle* ll;
 //     char FullPath[1024] = "";
 //
 //     if (!rb) return;
@@ -2558,9 +2559,9 @@ static char MessageFailed[] = "No saving action 
performed.";
 //                     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) {
+//             for (ll = lanpr->line_layers.pFirst; ll; ll = ll->Item.pNext) {
 //                     FullPath[0] = 0;
-//                     if ((!rdc->Name || !rdc->Name->Ptr) && !unnamed) {
+//                     if ((!ll->Name || !ll->Name->Ptr) && !unnamed) {
 //                             nulAddPanelMessage(&List, MessageHalfSuccess);
 //                             nulAddPanelMessage(&List, MessageLayerName);
 //                             unnamed = 1;
@@ -2569,8 +2570,8 @@ static char MessageFailed[] = "No saving action 
performed.";
 //                     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);
+//                     strcat(FullPath, ll->Name->Ptr);
+//                     lanpr_SaveRenderBufferPreviewAsImage(rb, FullPath, ll, 
0);
 //             }
 //             if(unnamed)nulEnableMultiMessagePanel(a, 0, "Caution", &List, 
e->x, e->y, 500, e);
 //     }
@@ -2578,13 +2579,13 @@ static char MessageFailed[] = "No saving action 
performed.";
 //     return NUL_FINISHED;
 //}
 //int ACTINV_SaveSingleLayer(nActuator* a, nEvent* e) {
-//     LANPR_LineStyle* rdc = a->This->EndInstance;
+//     LANPR_LineStyle* ll = a->This->EndInstance;
 //     char FullPath[1024] = "";
 //     int fail = 0;
 //
-//     if (!rdc)return;
+//     if (!ll)return;
 //
-//     tnsFrameBuffer* fb = rdc->ParentRB->FrameBuffer;
+//     tnsFrameBuffer* fb = ll->ParentRB->FrameBuffer;
 //
 //     if (!fb) return;
 //
@@ -2597,7 +2598,7 @@ static char MessageFailed[] = "No saving action 
performed.";
 //             if ((!fb->ImageNameConnector || !fb->ImageNameConnector->Ptr)) 
nulAddPanelMessage(&List, MessageConnector);
 //             fail = 1;
 //     }
-//     if (!rdc->Name || !rdc->Name->Ptr) {
+//     if (!ll->Name || !ll->Name->Ptr) {
 //             nulAddPanelMessage(&List, MessageHalfSuccess);
 //             nulAddPanelMessage(&List, MessageLayerName);
 //             fail = 1;
@@ -2613,8 +2614,8 @@ static char MessageFailed[] = "No saving action 
performed.";
 //     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);
+//     strcat(FullPath, ll->Name->Ptr);
+//     lanpr_SaveRenderBufferPreviewAsImage(ll->ParentRB, FullPath, ll, 0);
 //
 //
 //     return NUL_FINISHED;
@@ -2622,7 +2623,7 @@ static char MessageFailed[] = "No saving action 
performed.";
 
 
 
-long lanpr_CountLeveledEdgeSegmentCount(nListHandle *LineList, int 
OccludeLevel, Collection *OverrideGroup, int Exclusive) {
+long lanpr_CountLeveledEdgeSegmentCount(nListHandle *LineList, int qi_begin, 
int qi_end) {
        nListItemPointer *lip;
        LANPR_RenderLine *rl;
        LANPR_RenderLineSegment *rls;
@@ -2633,11 +2634,11 @@ long lanpr_CountLeveledEdgeSegmentCount(nListHandle 
*LineList, int OccludeLevel,
                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++;
+                       //if (OverrideGroup) {
+                       //      if (Exclusive && 
BKE_collection_has_object(OverrideGroup, rl->ObjectRef)) continue;
+                       //      if (!Exclusive && 
!BKE_collection_has_object(OverrideGroup, rl->ObjectRef)) continue;
+                       //}
+                       if (rls->OccludeLevel >= qi_begin && 
rls->OccludeLevel<= qi_end) Count++;
                }
        }
        return Count;
@@ -2651,7 +2652,7 @@ long 
lanpr_CountIntersectionSegmentCount(LANPR_RenderBuffer *rb) {
        }
        return Count;
 }
-void *lanpr_MakeLeveledEdgeVertexArray(LANPR_RenderBuffer *rb, nListHandle 
*LineList, float *VertexArray, int OccludeLevel, Collection *OverrideGroup, int 
Exclusive) {
+void *lanpr_MakeLeveledEdgeVertexArray(LANPR_RenderBuffer *rb, nListHandle 
*LineList, float *VertexArray, int qi_begin, int qi_end) {
        nListItemPointer *lip;
        LANPR_RenderLine *rl;
        LANPR_RenderLineSegment *rls, *irls;
@@ -2662,14 +2663,13 @@ void 
*lanpr_MakeLeveledEdgeVertexArray(LANPR_RenderBuffer *rb, nListHandle *Line
        for (lip = LineList->pFirst; lip; lip = lip->pNext) {
                rl = lip->p;
                o = rl->ObjectRef;
-               if (OverrideGroup) {
-                       //if (CollectionHaveObject(OverrideGroup, 
rl->ObjectRef) && Exclusive) continue;
-                       //if (!CollectionHaveObject(OverrideGroup, 
rl->ObjectRef) && !Exclusive) continue;
-               }
+               //if (OverrideGroup) {
+               //      if (Exclusive && 
BKE_collection_has_object(OverrideGroup, rl->ObjectRef)) continue;
+               //      if (!Exclusive && 
!BKE_collection_has_object(OverrideGroup, rl->ObjectRef)) continue;
+               //}
 
-               //if(o) o->LineRenderingDone = 1;
                for (rls = rl->Segments.pFirst; rls; rls = rls->Item.pNext) {
-                       if (rls->OccludeLevel == OccludeLevel) {
+                       if (rls->OccludeLevel >= qi_begin && 
rls->OccludeLevel<= qi_end) {
                                *V = tnsLinearItp(rl->L->FrameBufferCoord[0], 
rl->R->FrameBufferCoord[0], rls->at) * W;
                                V++;
                                *V = tnsLinearItp(rl->L->FrameBufferCoord[1], 
rl->R->FrameBufferCoord[1], rls->at) * H;
@@ -2767,93 +2767,88 @@ u32bit lanpr_MakeBoundingAreaVBORecursive(float *V, 
u32bit Begin, LANPR_Bounding
 //}
 
 
-void lanpr_RebuildRenderDrawCommand(LANPR_RenderBuffer *rb, LANPR_LineLayer 
*rdc) {
+/* ============================================ viewport display 
================================================= */
+
+void lanpr_RebuildRenderDrawCommand(LANPR_RenderBuffer *rb, LANPR_LineLayer 
*ll) {
        int Count = 0;
        int level;
        float *V, *tv, *N;;
 
-       if (!rb || !rb->Scene) return;
+       if (ll->type == TNS_COMMAND_LINE) {
+               glGenBuffers(1, &ll->VBO);
+               glBindBuffer(GL_ARRAY_BUFFER, ll->VBO);
 
-       if (rdc->VBO) {
-               glBindBuffer(GL_ARRAY_BUFFER, 0);
-               glDeleteBuffers(1, &rdc->VBO);
-       }
-       if (rdc->NBO) {
-               glBindBuffer(GL_ARRAY_BUFFER, 0);
-               glDeleteBuffers(1, &rdc->NBO);
-       }
+               if (ll->enable_contour)           Count += 
lanpr_CountLeveledEdgeSegmentCount(&rb->Contours, ll->qi_begin, ll->qi_end);
+               if (ll->enable_crease)            Count += 
lanpr_CountLeveledEdgeSegmentCount(&rb->CreaseLines, ll->qi_begin, ll->qi_end);
+               if (ll->enable_intersection)      Count += 
lanpr_CountLeveledEdgeSegmentCount(&rb->IntersectionLines, ll->qi_begin, 
ll->qi_end);
+               if (ll->enable_edge_mark)         Count += 
lanpr_CountLeveledEdgeSegmentCount(&rb->EdgeMarks, ll->qi_be

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to