Commit: 57d52826f62c52bdd49ab9dab19f87a11936dfa0
Author: Nick Wu
Date:   Thu Jun 21 15:56:49 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB57d52826f62c52bdd49ab9dab19f87a11936dfa0

Added almost all offline render code. adaptation pending, don't compile!

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

M       source/blender/draw/CMakeLists.txt
D       source/blender/draw/engines/lanpr/NUL_TNS_SoftwareRender.c
D       source/blender/draw/engines/lanpr/NUL_Util.h
M       source/blender/draw/engines/lanpr/lanpr_all.h
M       source/blender/draw/engines/lanpr/lanpr_ops.c
R061    source/blender/draw/engines/lanpr/NUL_Util.c    
source/blender/draw/engines/lanpr/lanpr_util.c
A       source/blender/draw/engines/lanpr/lanpr_util.h
M       source/blender/makesdna/DNA_scene_types.h

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

diff --git a/source/blender/draw/CMakeLists.txt 
b/source/blender/draw/CMakeLists.txt
index 21d5ec7ad81..b47346e5617 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -121,6 +121,7 @@ set(SRC
        engines/lanpr/lanpr_engine.c
        engines/lanpr/lanpr_snake.c
        engines/lanpr/lanpr_ops.c
+       engines/lanpr/lanpr_util.c
 
        DRW_engine.h
        intern/DRW_render.h
@@ -142,8 +143,7 @@ set(SRC
        engines/eevee/eevee_private.h
        engines/external/external_engine.h
 
-       #engines/lanpr/NUL_TNS.h
-       engines/lanpr/NUL_Util.h
+       engines/lanpr/lanpr_util.h
        engines/lanpr/lanpr_all.h
 )
 
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS_SoftwareRender.c 
b/source/blender/draw/engines/lanpr/NUL_TNS_SoftwareRender.c
deleted file mode 100644
index 8a8f0911797..00000000000
--- a/source/blender/draw/engines/lanpr/NUL_TNS_SoftwareRender.c
+++ /dev/null
@@ -1,3994 +0,0 @@
-#include "NUL4.h"
-#include "NUL_Util.h"
-#include "NUL_TNS.h"
-#include "tinycthread.h"
-#include "png.h"
-
-#include <math.h>
-
-/*
-
-Ported from NUL4.0
-
-Author(s):WuYiming - xp8...@outlook.com
-
-*/
-
-extern tnsMain* T;
-extern NUL MAIN;
-
-static int tnsglobal_TriangleIntersectionCount;
-
-
-void tnsset_RenderOverallProgress(tnsRenderBuffer* rb, real value);
-void tnsset_PlusRenderContourCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderCreaseCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderMaterialCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderIntersectionCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderContourProcessedCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderCreaseProcessedCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderMaterialProcessedCount(tnsRenderBuffer* rb, int value);
-void tnsset_PlusRenderIntersectionProcessedCount(tnsRenderBuffer* rb, int 
value);
-
-
-
-void tRdrMakeFakeFrameBuffer(tnsRenderBuffer* rb, int W, int H, int Samples) {
-       tnsFrameBuffer* fb = memAquireOnly(sizeof(tnsFrameBuffer));
-       fb->SubPixelSample = Samples;
-       fb->W = W;
-       fb->H = H;
-       rb->FrameBuffer = fb;
-       fb->OutputAALevel = TNS_OUTPUT_AA_16;
-}
-void tRdrMakeFrameBuffer(tnsRenderBuffer* rb,int W,int H,int Samples) {
-       tnsFrameBuffer* fb = memAquireOnly(sizeof(tnsFrameBuffer));
-       //fb->Pixels = CreateNewBuffer(tnsRenderSubPixel, W*H*Samples*Samples);
-
-       //if (!fb->Pixels) MessageBox(0, "�ڴ�ը��", "�ڴ�ը��", 0);
-
-       fb->SubPixelSample = Samples;
-       fb->W = W;
-       fb->H = H;
-       rb->FrameBuffer = fb;
-}
-void tRdrMakeRenderTiles(tnsRenderBuffer* rb,int TileW,int TileH) {
-       tnsRenderTile* rt;
-       tnsRenderTile* m;
-       tnsFrameBuffer* fb = rb->FrameBuffer;
-       int fbw=fb->W, fbh=fb->H;
-       char sample = fb->SubPixelSample;
-       int Rows = fbh / TileH;
-       int Colums = fbw / TileW;
-       int r, c;
-
-       //if (!(rb->State & TNS_RENDERBUFFER_RASTERIZER_COMPLETE))return;
-
-       if (Rows*TileH < fbh) 
-               Rows += 1;
-       if (Colums*TileW < fbw) 
-               Colums += 1;
-
-       rb->FrameBuffer->TileCountX = Colums;
-       rb->FrameBuffer->TileCountY = Rows;
-       rb->FrameBuffer->TileSizeW = TileW;
-       rb->FrameBuffer->TileSizeH = TileH;
-
-       rt = CreateNewBuffer(tnsRenderTile, Rows*Colums);
-       rb->FrameBuffer->Tiles = rt;
-       for (r = 0; r < Rows; r++) {
-               for (c = 0; c < Colums; c++) {
-                       m = &TNS_TILE(rt,r,c,Colums);
-                       m->Row = r;
-                       m->Column = c;
-                       m->FirstPixel = 
TNS_FRAMEBUFFER_PIXEL((rb->FrameBuffer), r, c);
-                       m->SubX = c*TileW;
-                       m->SubY = r*TileH; 
-                       if (c != Colums - 1)m->SubXLim = m->SubX+TileW; else 
m->SubXLim = fbw;
-                       if (r != Rows - 1)m->SubYLim = m->SubY+TileH; else 
m->SubYLim = fbh;
-                       m->FX = (real)m->SubX / (real)fbw;
-                       m->FXLim = (real)m->SubXLim / (real)fbw;
-                       m->FY = (real)m->SubY / (real)fbh;
-                       m->FYLim = (real)m->SubYLim / (real)fbh;
-                       if (c == Colums - 1) m->FXLim = 1.0f;
-                       if (r == Rows - 1) m->FYLim = 1.0f;
-               }
-       }
-}
-void tRdrClearRenderTiles(tnsRenderBuffer* rb, int TileW, int TileH) {
-       tnsRenderTile* rt;
-       tnsRenderTile* m;
-       tnsFrameBuffer* fb = rb->FrameBuffer;
-       FreeMem(fb->Tiles);
-}
-
-
-void tRdrCutLineIntegrated(tnsRenderBuffer* rb, tnsRenderLine* rl, real Begin, 
real End) {
-       tnsRenderLineSegment* rls = rl->Segments.pFirst, *irls;
-       tnsRenderLineSegment *BeginSegment = 0, *EndSegment = 0;
-       tnsRenderLineSegment *ns = 0, *ns2 = 0;
-       tnsRenderLineSegment *BeforeBegin, *AfterEnd;
-       tnsRenderLineSegment *Next;
-
-       if (TNS_DOUBLE_CLOSE_ENOUGH(Begin, End)) return;
-
-       if (Begin != Begin)
-               Begin = 0;
-       if (End != End)
-               End = 0;
-
-       if (Begin > End) {
-               real t = Begin;
-               Begin = End;
-               End = t;
-       }
-
-       for (rls = rl->Segments.pFirst; rls; rls = rls->Item.pNext) {
-               if (TNS_DOUBLE_CLOSE_ENOUGH(rls->at, Begin)) {
-                       BeginSegment = rls;
-                       ns = BeginSegment;
-                       break;
-               }
-               if (!rls->Item.pNext) {
-                       break;
-               }
-               irls = rls->Item.pNext;
-               if (irls->at > Begin && Begin > rls->at) {
-                       BeginSegment = irls;
-                       ns = 
memStaticAquireThread(&rb->RenderDataPool,sizeof(tnsRenderLineSegment));
-                       break;
-               }
-       }
-       for (rls = BeginSegment; rls; rls = rls->Item.pNext) {
-               if (TNS_DOUBLE_CLOSE_ENOUGH(rls->at, End)) {
-                       EndSegment = rls;
-                       ns2 = EndSegment;
-                       break;
-               }
-               //irls = rls->Item.pNext;
-               if (rls->at > End) {
-                       EndSegment = rls;
-                       ns2 = 
memStaticAquireThread(&rb->RenderDataPool,sizeof(tnsRenderLineSegment));
-                       break;
-               }
-       }
-
-       if (!ns) ns = 
memStaticAquireThread(&rb->RenderDataPool,sizeof(tnsRenderLineSegment));
-       if (!ns2) ns2 = 
memStaticAquireThread(&rb->RenderDataPool,sizeof(tnsRenderLineSegment));
-
-       if (BeginSegment) {
-               if (BeginSegment != ns) {
-                       ns->OccludeLevel = BeginSegment->Item.pPrev ? (irls = 
BeginSegment->Item.pPrev)->OccludeLevel : 0;
-                       lstInsertItemBefore(&rl->Segments, ns, BeginSegment);
-               }
-       }
-       else {
-               ns->OccludeLevel = (irls = rl->Segments.pLast)->OccludeLevel;
-               lstAppendItem(&rl->Segments, ns);
-       }
-       if (EndSegment) {
-               if (EndSegment != ns2) {
-                       ns2->OccludeLevel = EndSegment->Item.pPrev ? (irls = 
EndSegment->Item.pPrev)->OccludeLevel : 0;
-                       lstInsertItemBefore(&rl->Segments, ns2, EndSegment);
-               }
-       }
-       else {
-               ns2->OccludeLevel = (irls = rl->Segments.pLast)->OccludeLevel;
-               lstAppendItem(&rl->Segments, ns2);
-       }
-
-       ns->at = Begin;
-       ns2->at = End;
-
-       for (rls = ns; rls && rls != ns2; rls = rls->Item.pNext) {
-               rls->OccludeLevel++;
-       }
-
-       //for (rls = rl->Segments.pFirst; rls; rls = rls->Item.pNext) {
-       //      if ((irls = rls->Item.pNext) && irls->at < rls->at) {
-       //              tnsRenderLineSegment* deb;
-       //              printf("WRONG!\n");
-       //              for (deb = rl->Segments.pFirst; deb; deb = 
deb->Item.pNext) {
-       //                      printf("[%d-%d] ", deb->at, deb->OccludeLevel);
-       //              }
-       //              printf("\n");
-       //              break;
-       //      }
-       //}
-}
-
-
-#define TNS_BOUND_AREA_CROSSES(b1,b2)\
-((b1)[0]<(b2)[1] && (b1)[1]>(b2)[0] && (b1)[3]<(b2)[2] && (b1)[2]>(b2)[3])
-void tRdrMakeInitialBoundingAreas(tnsRenderBuffer* rb) {
-       int SpW = 20;
-       int SpH = rb->FrameBuffer->H / (rb->FrameBuffer->W / SpW);
-       int Row, Col;
-       tnsBoundingArea* ba;
-       real W = (real)rb->FrameBuffer->W;
-       real H = (real)rb->FrameBuffer->H;
-       real SpanW = (real)1 / SpW * 2.0;
-       real SpanH = (real)1 / SpH * 2.0;
-
-       rb->FrameBuffer->TileCountX = SpW;
-       rb->FrameBuffer->TileCountY = SpH;
-       rb->FrameBuffer->WidthPerTile = SpanW;
-       rb->FrameBuffer->HeightPerTile = SpanH;
-
-       rb->BoundingAreaCount = SpW * SpH;
-       rb->InitialBoundingAreas = memStaticAquire(&rb->RenderDataPool, 
sizeof(tnsBoundingArea) * rb->BoundingAreaCount);
-
-       for (Row = 0; Row < SpH; Row++) {
-               for (Col = 0; Col < SpW; Col++) {
-                       ba = &rb->InitialBoundingAreas[Row * 20 + Col];
-
-                       ba->L = SpanW * Col - 1.0;
-                       ba->R = (Col == SpW - 1) ? 1.0 : (SpanW * (Col + 1) - 
1.0);
-                       ba->U = 1.0 - SpanH * Row;
-                       ba->B = (Row == SpH - 1) ? -1.0 : (1.0 - SpanH * (Row + 
1));
-
-                       ba->CX = (ba->L + ba->R) / 2;
-                       ba->CY = (ba->U + ba->B) / 2;
-
-                       if (Row) {
-                               lstAppendPointerStatic(&ba->UP, 
&rb->RenderDataPool, &rb->InitialBoundingAreas[(Row - 1) * 20 + Col]);
-                       }
-                       if (Col) {
-                               lstAppendPointerStatic(&ba->LP, 
&rb->RenderDataPool, &rb->InitialBoundingAreas[Row * 20 + Col - 1]);
-                       }
-                       if (Row != SpH -1) {
-                               lstAppendPointerStatic(&ba->BP, 
&rb->RenderDataPool, &rb->InitialBoundingAreas[(Row + 1) * 20 + Col]);
-                       }
-                       if (Col != SpW - 1) {
-                               lstAppendPointerStatic(&ba->RP, 
&rb->RenderDataPool, &rb->InitialBoundingAreas[Row * 20 + Col + 1]);
-                       }
-               }
-       }
-}
-void tRdrConnectNewBoundingAreas(tnsRenderBuffer* rb, tnsBoundingArea* Root) {
-       tnsBoundingArea* ba = Root->Child, *tba;
-       nListItemPointer* lip,*lip2,*lip3,*NextLip;
-       nMemoryPool* mph= &rb->RenderDataPool;
-
-       lstAppendPointerStaticPool(mph, &ba[1].RP, &ba[0]);
-       lstAppendPointerStaticPool(mph, &ba[0].LP, &ba[1]);
-       lstAppendPointerStaticPool(mph, &ba[1].BP, &ba[2]);
-       lstAppendPointerStaticPool(mph, &ba[2].UP, &ba[1]);
-       lstAppendPointerStaticPool(mph, &ba[2].RP, &ba[3]);
-       lstAppendPointerStaticPool(mph, &ba[3].LP, &ba[2]);
-       lstAppendPointerStaticPool(mph, &ba[3].UP, &ba[0]);
-       lstAppendPointerStaticPool(mph, &ba[0].BP, &ba[3]);
-
-       for (lip = Root->LP.pFirst; lip; lip = lip->pNext) {
-               tba = lip->p;
-               if (ba[1].U > tba->B && ba[1].B < tba->U) { 
lstAppendPointerStaticPool(mph, &ba[1].LP, tba); 
lstAppendPointerStaticPool(mph, &tba->RP, &ba[1]); }
-               if (ba[2].U > tba->B && ba[2].B < tba->U) { 
lstAppendPointerStaticPool(mph, &ba[2].LP, tba); 
lstAppendPointerStaticPool(mph, &tba->RP, &ba[2]); }
-       }
-       for (lip = Root->RP.pFirst; lip; lip = lip->pNext) {
-               tba = lip->p;
-               if (ba[0].U > tba->B && ba[0].B < tba->U) { 
lstAppendPointerStaticPool(mph, &ba[0].RP, tba); 
lstAppendPointerStaticPool(mph, &tba->LP, &ba[0]); }
-               if (ba[3].U > tba->B && ba[3].B < tba->U) { 
lstAppendPointerStaticPool(mph, &ba[3].RP, tba); 
lstAppendPointerStaticPool(mph, &tba->LP, &ba[3]); }
-       }
-       for (lip = Root->UP.pFirst; lip; lip = lip->pNext) {
-               tba = lip->p;
-               if (ba[0].R > tba->L && ba[0].L < tba->R) { 
lstAppendPointerStaticPool(mph, &ba[0].UP, tba); 
lstAppendPointerStaticPool(mph, &tba->BP, &ba[0]); }
-               if (ba[1].R > tba->L && ba[1].L < tba->R) { 
lstAppendPointerStaticPool(mph, &ba[1].UP, tba); 
lstAppendPointerStaticPool(mph, &tba->BP, &ba[1]); }
-       }
-       for (lip = Root->BP.pFirst; lip; lip = lip->pNext) {
-               tba = lip->p;
-               if (ba[2].R > tba->L && ba[2].L < tba->R) { ls

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