[Bf-blender-cvs] [e6821d3d27b] soc-2018-npr: Drawing code moved in, but most parts need redo.
Nick Wu
noreply at git.blender.org
Mon Jun 25 15:37:52 CEST 2018
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. @@
More information about the Bf-blender-cvs
mailing list