[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