From cb9533c56daa74235cfd4fd2d1170ca1be0cfeb1 Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Mon, 15 Oct 2018 23:27:08 -0400 Subject: [PATCH 1/7] part 1 halfway --- src/CMakeLists.txt | 2 +- src/rasterize.cu | 137 ++++++++++++++++++++++++++++++++++++--------- 2 files changed, 111 insertions(+), 28 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a57f69f..00edee0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,5 +6,5 @@ set(SOURCE_FILES cuda_add_library(src ${SOURCE_FILES} - OPTIONS -arch=sm_20 + OPTIONS -arch=sm_61 ) diff --git a/src/rasterize.cu b/src/rasterize.cu index 1262a09..d282ff2 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -62,10 +62,11 @@ namespace { // The attributes listed below might be useful, // but always feel free to modify on your own - // glm::vec3 eyePos; // eye space position used for shading - // glm::vec3 eyeNor; - // VertexAttributeTexcoord texcoord0; - // TextureData* dev_diffuseTex; + glm::vec3 eyePos; // eye space position used for shading + glm::vec3 eyeNor; + + VertexAttributeTexcoord texcoord0; + TextureData* dev_diffuseTex; // ... }; @@ -110,6 +111,7 @@ static Fragment *dev_fragmentBuffer = NULL; static glm::vec3 *dev_framebuffer = NULL; static int * dev_depth = NULL; // you might need this buffer when doing depth test +static int * dev_mutex = NULL; /** * Kernel that writes the image to the OpenGL PBO directly. @@ -142,12 +144,20 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { int y = (blockIdx.y * blockDim.y) + threadIdx.y; int index = x + (y * w); - if (x < w && y < h) { + if (x < w && y < h) + { framebuffer[index] = fragmentBuffer[index].color; // TODO: add your fragment shader code here + Fragment fragment = fragmentBuffer[index]; + + //int u = fragment.texcoord0.x * fragment.texWidth; + //int v = fragment.texcoord0.y * fragment.texHeight; + //fragment.color = getColor(fragment.dev_diffuseTex, fragment.texWidth, u, v); + framebuffer[index] *= glm::dot(fragment.eyeNor, glm::normalize(glm::vec3(1.0f) - fragmentBuffer[index].eyePos)); } + } /** @@ -166,6 +176,10 @@ void rasterizeInit(int w, int h) { cudaFree(dev_depth); cudaMalloc(&dev_depth, width * height * sizeof(int)); + cudaFree(dev_mutex); + cudaMalloc(&dev_mutex, width * height * sizeof(int)); + cudaMemset(dev_mutex, 0, width * height * sizeof(int)); + checkCUDAError("rasterizeInit"); } @@ -628,20 +642,30 @@ void _vertexTransformAndAssembly( int numVertices, PrimitiveDevBufPointers primitive, glm::mat4 MVP, glm::mat4 MV, glm::mat3 MV_normal, - int width, int height) { - + int width, int height) +{ // vertex id int vid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (vid < numVertices) { + if (vid < numVertices) + { // TODO: Apply vertex transformation here - // Multiply the MVP matrix for each vertex position, this will transform everything into clipping space - // Then divide the pos by its w element to transform into NDC space - // Finally transform x and y to viewport space - - // TODO: Apply vertex assembly here - // Assemble all attribute arraies into the primitive array - + // Multiply the MVP matrix for each vertex position, this will transform everything into clipping space + glm::vec4 pos = MVP * glm::vec4(primitive.dev_position[vid], 1.0f); + glm::vec3 eyePos = glm::vec3(MV * glm::vec4(primitive.dev_position[vid], 1.0f)); + glm::vec3 eyeNor = glm::normalize(MV_normal * primitive.dev_normal[vid]); + // Then divide the pos by its w element to transform into NDC space + if (pos.w != 0) pos /= pos.w; + // Finally transform x and y to viewport space + pos.x = 0.5f * (float)width * (pos.x + 1.f); + pos.y = 0.5f * (float)height * (1.f - pos.y); + // pos.z = 1.f / eyePos.z; + + // TODO: Apply vertex assembly here + // Assemble all attribute arrays into the primitive array + primitive.dev_verticesOut[vid].pos = pos; + primitive.dev_verticesOut[vid].eyePos = eyePos; + primitive.dev_verticesOut[vid].eyeNor = eyeNor; } } @@ -655,25 +679,80 @@ void _primitiveAssembly(int numIndices, int curPrimitiveBeginId, Primitive* dev_ // index id int iid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (iid < numIndices) { - + if (iid < numIndices) + { // TODO: uncomment the following code for a start // This is primitive assembly for triangles - //int pid; // id for cur primitives vector - //if (primitive.primitiveMode == TINYGLTF_MODE_TRIANGLES) { - // pid = iid / (int)primitive.primitiveType; - // dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] - // = primitive.dev_verticesOut[primitive.dev_indices[iid]]; - //} - + int pid; // id for cur primitives vector + if (primitive.primitiveMode == TINYGLTF_MODE_TRIANGLES) + { + pid = iid / (int)primitive.primitiveType; + dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] + = primitive.dev_verticesOut[primitive.dev_indices[iid]]; + } // TODO: other primitive types (point, line) } } - +__global__ +void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, + Fragment* dev_fragmentBuffer, int* dev_depth, + int * dev_mutex, int width, int height) +{ + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index > totalNumPrimitives) return; + + // get the triangle vertices + Primitive primitive = dev_primitives[index]; + VertexOut v0 = primitive.v[0]; + VertexOut v1 = primitive.v[1]; + VertexOut v2 = primitive.v[2]; + glm::vec3 triangle[3] = { glm::vec3(v0.pos),glm::vec3(v1.pos),glm::vec3(v2.pos) }; + + // find the min and max of triangle bounding box + AABB bBox = getAABBForTriangle(triangle); + const int minX = glm::min(glm::max((int)bBox.min.x, 0 ), width - 1); + const int minY = glm::min(glm::max((int)bBox.min.y, 0 ), height - 1); + const int maxX = glm::min(glm::max((int)bBox.max.x, 0 ), width - 1); + const int maxY = glm::min(glm::max((int)bBox.max.y, 0 ), height - 1); + + for (int x = minX; x < maxX; x++) + { + for (int y = minY; y < maxY; y++) + { + glm::vec3 barycentric = calculateBarycentricCoordinate(triangle, glm::vec2(x, y)); + if (isBarycentricCoordInBounds(barycentric)) + { + const int fragmentId = x + (y * width); + bool isSet; + do + { + isSet = (atomicCAS(&dev_mutex[fragmentId], 0, 1) == 0); + if (isSet) + { + int depth_z = -getZAtCoordinate(barycentric, triangle) * INT_MAX; + if (depth_z < dev_depth[fragmentId]) { + dev_depth[fragmentId] = depth_z; + Fragment& fragment = dev_fragmentBuffer[fragmentId]; + fragment.eyePos = v0.eyePos * barycentric.x + v1.eyePos * barycentric.y + v2.eyePos * barycentric.z; + fragment.eyeNor = v0.eyeNor * barycentric.x + v1.eyeNor * barycentric.y + v2.eyeNor * barycentric.z; + } + } + + if (isSet) + { + dev_mutex[fragmentId] = 0; + } + + } while (!isSet); + + } + } + } +} /** * Perform rasterization. @@ -723,8 +802,9 @@ void rasterize(uchar4 *pbo, const glm::mat4 & MVP, const glm::mat4 & MV, const g initDepth << > >(width, height, dev_depth); // TODO: rasterize - - + dim3 numThreadsPerBlock(128); + dim3 numBlocksForPrimitives = (totalNumPrimitives + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x; + _rasterize << > > (totalNumPrimitives, dev_primitives, dev_fragmentBuffer, dev_depth, dev_mutex, width, height); // Copy depthbuffer colors into framebuffer render << > >(width, height, dev_fragmentBuffer, dev_framebuffer); @@ -772,5 +852,8 @@ void rasterizeFree() { cudaFree(dev_depth); dev_depth = NULL; + cudaFree(dev_mutex); + dev_mutex = NULL; + checkCUDAError("rasterize Free"); } From 2f42a5231ae9d009054411af2fd3feb0f2db0f20 Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Mon, 15 Oct 2018 23:49:15 -0400 Subject: [PATCH 2/7] finished part 1 --- src/rasterize.cu | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index d282ff2..39d9d14 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -719,9 +719,9 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, const int maxX = glm::min(glm::max((int)bBox.max.x, 0 ), width - 1); const int maxY = glm::min(glm::max((int)bBox.max.y, 0 ), height - 1); - for (int x = minX; x < maxX; x++) + for (int x = minX; x <= maxX; x++) { - for (int y = minY; y < maxY; y++) + for (int y = minY; y <= maxY; y++) { glm::vec3 barycentric = calculateBarycentricCoordinate(triangle, glm::vec2(x, y)); if (isBarycentricCoordInBounds(barycentric)) @@ -739,6 +739,7 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, Fragment& fragment = dev_fragmentBuffer[fragmentId]; fragment.eyePos = v0.eyePos * barycentric.x + v1.eyePos * barycentric.y + v2.eyePos * barycentric.z; fragment.eyeNor = v0.eyeNor * barycentric.x + v1.eyeNor * barycentric.y + v2.eyeNor * barycentric.z; + fragment.color = fragment.eyeNor; } } From e998747ea0d1a13fa7746522d9022ae8a083ad2f Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Tue, 16 Oct 2018 21:11:43 -0400 Subject: [PATCH 3/7] finished UV texture mapping --- src/rasterize.cu | 133 ++++++++++++++++++++++++++++++++++++----------- src/rasterize.h | 7 ++- 2 files changed, 110 insertions(+), 30 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index 39d9d14..82ac034 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -41,12 +41,12 @@ namespace { // The attributes listed below might be useful, // but always feel free to modify on your own - glm::vec3 eyePos; // eye space position used for shading - glm::vec3 eyeNor; // eye space normal used for shading, cuz normal will go wrong after perspective transformation + glm::vec3 eyePos; // eye space position used for shading + glm::vec3 eyeNor; // eye space normal used for shading, cuz normal will go wrong after perspective transformation // glm::vec3 col; - glm::vec2 texcoord0; - TextureData* dev_diffuseTex = NULL; - // int texWidth, texHeight; + glm::vec2 texcoord0; + TextureData* dev_diffuseTex = NULL; + int texWidth, texHeight; // ... }; @@ -67,6 +67,7 @@ namespace { VertexAttributeTexcoord texcoord0; TextureData* dev_diffuseTex; + int texWidth, texHeight; // ... }; @@ -135,29 +136,69 @@ void sendImageToPBO(uchar4 *pbo, int w, int h, glm::vec3 *image) { } } +__device__ +glm::vec3 getTexColor(TextureData* tex, int width, float u, float v) +{ + int index = u + v * width; + return glm::vec3(tex[index * 3], tex[index * 3 + 1], tex[index * 3 + 2]) / 255.f; +} + +// for more information on bilinear filtering: +// https://en.wikipedia.org/wiki/Bilinear_filtering +// used sample code from this source +__device__ +glm::vec3 getBilinearFilteredPixelColor(Fragment &fragment) +{ + float u = fragment.texcoord0.x * fragment.texWidth - 0.5f; + float v = fragment.texcoord0.y * fragment.texHeight - 0.5f; + int x = glm::floor(u); + int y = glm::floor(v); + float u_ratio = u - x; + float v_ratio = v - y; + float u_opposite = 1.f - u_ratio; + float v_opposite = 1.f - v_ratio; + + // retrieve texture data + glm::vec3 texXY = getTexColor(fragment.dev_diffuseTex, fragment.texWidth, x, y); + glm::vec3 texX1Y = getTexColor(fragment.dev_diffuseTex, fragment.texWidth, x + 1, y); + glm::vec3 texXY1 = getTexColor(fragment.dev_diffuseTex, fragment.texWidth, x, y + 1); + glm::vec3 texX1Y1 = getTexColor(fragment.dev_diffuseTex, fragment.texWidth, x + 1, y + 1); + + return (texXY * u_opposite + texX1Y * u_ratio) * v_opposite + + (texXY1 * u_opposite + texX1Y1 * u_ratio) * v_ratio; +} + /** * Writes fragment colors to the framebuffer */ __global__ -void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { +void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) +{ int x = (blockIdx.x * blockDim.x) + threadIdx.x; int y = (blockIdx.y * blockDim.y) + threadIdx.y; int index = x + (y * w); if (x < w && y < h) { - framebuffer[index] = fragmentBuffer[index].color; - // TODO: add your fragment shader code here Fragment fragment = fragmentBuffer[index]; + + #if TEXTURE + if (fragment.dev_diffuseTex != NULL) + { + #if BILINEAR + fragment.color = getBilinearFilteredPixelColor(fragment); + #else + int u = fragment.texcoord0.x * fragment.texWidth; + int v = fragment.texcoord0.y * fragment.texHeight; + fragment.color = getColor(fragment.dev_diffuseTex, fragment.texWidth, u, v); + #endif + } + #endif - //int u = fragment.texcoord0.x * fragment.texWidth; - //int v = fragment.texcoord0.y * fragment.texHeight; - //fragment.color = getColor(fragment.dev_diffuseTex, fragment.texWidth, u, v); - + framebuffer[index] = fragment.color; framebuffer[index] *= glm::dot(fragment.eyeNor, glm::normalize(glm::vec3(1.0f) - fragmentBuffer[index].eyePos)); } - } /** @@ -166,9 +207,11 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { void rasterizeInit(int w, int h) { width = w; height = h; + cudaFree(dev_fragmentBuffer); cudaMalloc(&dev_fragmentBuffer, width * height * sizeof(Fragment)); cudaMemset(dev_fragmentBuffer, 0, width * height * sizeof(Fragment)); + cudaFree(dev_framebuffer); cudaMalloc(&dev_framebuffer, width * height * sizeof(glm::vec3)); cudaMemset(dev_framebuffer, 0, width * height * sizeof(glm::vec3)); @@ -666,6 +709,14 @@ void _vertexTransformAndAssembly( primitive.dev_verticesOut[vid].pos = pos; primitive.dev_verticesOut[vid].eyePos = eyePos; primitive.dev_verticesOut[vid].eyeNor = eyeNor; + + // retrieve texture data + #if TEXTURE == 1 + primitive.dev_verticesOut[vid].texcoord0 = primitive.dev_texcoord0[vid]; + primitive.dev_verticesOut[vid].dev_diffuseTex = primitive.dev_diffuseTex; + primitive.dev_verticesOut[vid].texWidth = primitive.diffuseTexWidth; + primitive.dev_verticesOut[vid].texHeight = primitive.diffuseTexHeight; + #endif } } @@ -723,29 +774,53 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, { for (int y = minY; y <= maxY; y++) { - glm::vec3 barycentric = calculateBarycentricCoordinate(triangle, glm::vec2(x, y)); - if (isBarycentricCoordInBounds(barycentric)) + glm::vec3 barycentricCoord = calculateBarycentricCoordinate(triangle, glm::vec2(x, y)); + if (isBarycentricCoordInBounds(barycentricCoord)) { - const int fragmentId = x + (y * width); + Fragment fragment; + fragment.eyePos = v0.eyePos * barycentricCoord.x + v1.eyePos * barycentricCoord.y + v2.eyePos * barycentricCoord.z; + fragment.eyeNor = v0.eyeNor * barycentricCoord.x + v1.eyeNor * barycentricCoord.y + v2.eyeNor * barycentricCoord.z; + // use texture color + #if TEXTURE == 1 + fragment.dev_diffuseTex = v0.dev_diffuseTex; + fragment.texWidth = v0.texWidth; + fragment.texHeight = v0.texHeight; + // perspective correct texture coordinates + #if PERSPECTIVE == 1 + const float zCoord = 1.f / (barycentricCoord.x / v0.eyePos.z + + barycentricCoord.y / v1.eyePos.z + + barycentricCoord.z / v2.eyePos.z); + fragment.texcoord0 = zCoord * (barycentricCoord.x * (v0.texcoord0 / v0.eyePos.z) + + barycentricCoord.y * (v1.texcoord0 / v1.eyePos.z) + + barycentricCoord.z * (v2.texcoord0 / v2.eyePos.z)); + // no perspective correct + #else + fragment.texcoord0 = barycentric.x * v0.texcoord0 + barycentric.y * v1.texcoord0 + barycentric.z * v2.texcoord0; + #endif + // do not use texture color + #else + fragment.dev_diffuseTex = NULL; + // default use vertex normal as color + fragment.color = fragment.eyeNor + #endif + + const int fragIndex = x + (y * width); bool isSet; do { - isSet = (atomicCAS(&dev_mutex[fragmentId], 0, 1) == 0); + isSet = (atomicCAS(&dev_mutex[fragIndex], 0, 1) == 0); if (isSet) { - int depth_z = -getZAtCoordinate(barycentric, triangle) * INT_MAX; - if (depth_z < dev_depth[fragmentId]) { - dev_depth[fragmentId] = depth_z; - Fragment& fragment = dev_fragmentBuffer[fragmentId]; - fragment.eyePos = v0.eyePos * barycentric.x + v1.eyePos * barycentric.y + v2.eyePos * barycentric.z; - fragment.eyeNor = v0.eyeNor * barycentric.x + v1.eyeNor * barycentric.y + v2.eyeNor * barycentric.z; - fragment.color = fragment.eyeNor; + int depth = -getZAtCoordinate(barycentricCoord, triangle) * INT_MAX; + if (depth < dev_depth[fragIndex]) + { + dev_depth[fragIndex] = depth; + dev_fragmentBuffer[fragIndex] = fragment; } - } - - if (isSet) - { - dev_mutex[fragmentId] = 0; + + //reset mutex + dev_mutex[fragIndex] = 0; + } } while (!isSet); diff --git a/src/rasterize.h b/src/rasterize.h index 560aae9..500172e 100644 --- a/src/rasterize.h +++ b/src/rasterize.h @@ -12,11 +12,16 @@ #include #include +#define TEXTURE 1 +#define PERSPECTIVE 1 +#define BILINEAR 1 +// PRIMTYPE: 1 = Point, 2 = Line, 3 = Triangle +#define PRIMTYPE 3 + namespace tinygltf{ class Scene; } - void rasterizeInit(int width, int height); void rasterizeSetBuffers(const tinygltf::Scene & scene); From f33a4bbfd2f0d7853de155569fec4ba617024217 Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Tue, 16 Oct 2018 21:45:54 -0400 Subject: [PATCH 4/7] finished point line triangle --- src/rasterize.cu | 106 ++++++++++++++++++++++++++++++++++++++--------- src/rasterize.h | 2 +- 2 files changed, 87 insertions(+), 21 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index 82ac034..c7120a5 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -197,7 +197,10 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) #endif framebuffer[index] = fragment.color; - framebuffer[index] *= glm::dot(fragment.eyeNor, glm::normalize(glm::vec3(1.0f) - fragmentBuffer[index].eyePos)); + + #if PRIMTYPE == 3 + framebuffer[index] *= glm::dot(fragment.eyeNor, glm::normalize(glm::vec3(1.0f) - fragmentBuffer[index].eyePos)); + #endif } } @@ -748,31 +751,73 @@ void _primitiveAssembly(int numIndices, int curPrimitiveBeginId, Primitive* dev_ } -__global__ -void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, - Fragment* dev_fragmentBuffer, int* dev_depth, - int * dev_mutex, int width, int height) +__device__ +void _rasterizePoints(Fragment* dev_fragmentBuffer, Primitive& primitive, int width, int height) { - int index = (blockIdx.x * blockDim.x) + threadIdx.x; - if (index > totalNumPrimitives) return; + VertexOut v0 = primitive.v[0]; + VertexOut v1 = primitive.v[1]; + VertexOut v2 = primitive.v[2]; + glm::vec3 triangle[3] = { glm::vec3(v0.pos),glm::vec3(v1.pos),glm::vec3(v2.pos) }; - // get the triangle vertices - Primitive primitive = dev_primitives[index]; + int x, y; + for (int vertIdx = 0; vertIdx < 3; ++vertIdx) + { + x = triangle[vertIdx].x; y = triangle[vertIdx].y; + int fragmentId = x + y * width; + if ( (x >= 0 && x <= width - 1) && (y >= 0 && y <= height - 1) ) + { + dev_fragmentBuffer[fragmentId].color = glm::vec3(1.f); + } + } +} + +__device__ +void _rasterizeLines(Fragment* dev_fragmentBuffer, Primitive& primitive, const int *indicies, int width, int height) +{ VertexOut v0 = primitive.v[0]; VertexOut v1 = primitive.v[1]; VertexOut v2 = primitive.v[2]; glm::vec3 triangle[3] = { glm::vec3(v0.pos),glm::vec3(v1.pos),glm::vec3(v2.pos) }; - + + int x1, x2, y1, y2, dx, dy, y, fragmentId; + for (int index = 0; index < 6; index += 2) + { + x1 = triangle[indicies[index]].x; + y1 = triangle[indicies[index]].y; + x2 = triangle[indicies[index + 1]].x; + y2 = triangle[indicies[index + 1]].y; + dx = x2 - x1; + dy = y2 - y1; + for (int x = x1; x <= x2; x++) + { + y = y1 + dy * (x - x1) / dx; + fragmentId = x + y * width; + if ( (x >= 0 && x <= width - 1) && (y >= 0 && y <= height - 1) ) + { + dev_fragmentBuffer[fragmentId].color = glm::vec3(1.f); + } + } + } +} + +__device__ +void _rasterizeTriangles(Fragment* dev_fragmentBuffer, Primitive& primitive, int* dev_depth, int* dev_mutex, int width, int height) +{ + VertexOut v0 = primitive.v[0]; + VertexOut v1 = primitive.v[1]; + VertexOut v2 = primitive.v[2]; + glm::vec3 triangle[3] = { glm::vec3(v0.pos),glm::vec3(v1.pos),glm::vec3(v2.pos) }; + // find the min and max of triangle bounding box AABB bBox = getAABBForTriangle(triangle); - const int minX = glm::min(glm::max((int)bBox.min.x, 0 ), width - 1); - const int minY = glm::min(glm::max((int)bBox.min.y, 0 ), height - 1); - const int maxX = glm::min(glm::max((int)bBox.max.x, 0 ), width - 1); - const int maxY = glm::min(glm::max((int)bBox.max.y, 0 ), height - 1); + const int minX = glm::min(glm::max((int)bBox.min.x, 0), width - 1); + const int minY = glm::min(glm::max((int)bBox.min.y, 0), height - 1); + const int maxX = glm::min(glm::max((int)bBox.max.x, 0), width - 1); + const int maxY = glm::min(glm::max((int)bBox.max.y, 0), height - 1); for (int x = minX; x <= maxX; x++) { - for (int y = minY; y <= maxY; y++) + for (int y = minY; y <= maxY; y++) { glm::vec3 barycentricCoord = calculateBarycentricCoordinate(triangle, glm::vec2(x, y)); if (isBarycentricCoordInBounds(barycentricCoord)) @@ -803,16 +848,16 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, // default use vertex normal as color fragment.color = fragment.eyeNor #endif - + const int fragIndex = x + (y * width); bool isSet; - do + do { isSet = (atomicCAS(&dev_mutex[fragIndex], 0, 1) == 0); - if (isSet) + if (isSet) { int depth = -getZAtCoordinate(barycentricCoord, triangle) * INT_MAX; - if (depth < dev_depth[fragIndex]) + if (depth < dev_depth[fragIndex]) { dev_depth[fragIndex] = depth; dev_fragmentBuffer[fragIndex] = fragment; @@ -822,7 +867,7 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, dev_mutex[fragIndex] = 0; } - + } while (!isSet); } @@ -830,6 +875,27 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, } } +__global__ +void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, + Fragment* dev_fragmentBuffer, int* dev_depth, + int * dev_mutex, int width, int height) +{ + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index > totalNumPrimitives) return; + + // get the triangle vertices + Primitive primitive = dev_primitives[index]; + + #if PRIMTYPE == 1 + _rasterizePoints(dev_fragmentBuffer, primitive, width, height); + #elif PRIMTYPE == 2 + const int indices[] = { 0, 1, 1, 2, 2, 0 }; + _rasterizeLines(dev_fragmentBuffer, primitive, indices, width, height); + #elif PRIMTYPE == 3 + _rasterizeTriangles(dev_fragmentBuffer, primitive, dev_depth, dev_mutex, width, height); + #endif +} + /** * Perform rasterization. */ diff --git a/src/rasterize.h b/src/rasterize.h index 500172e..361c207 100644 --- a/src/rasterize.h +++ b/src/rasterize.h @@ -16,7 +16,7 @@ #define PERSPECTIVE 1 #define BILINEAR 1 // PRIMTYPE: 1 = Point, 2 = Line, 3 = Triangle -#define PRIMTYPE 3 +#define PRIMTYPE 2 namespace tinygltf{ class Scene; From c82b2bb42b62f5ff029078291439eacfeb36253a Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Tue, 16 Oct 2018 23:19:11 -0400 Subject: [PATCH 5/7] added images for readme --- README.md | 47 ++++++++++--- renders/checkerboard-no-bilinear.PNG | Bin 0 -> 19693 bytes ...heckerboard-no-perspective-no-bilinear.PNG | Bin 0 -> 17401 bytes renders/checkerboard.PNG | Bin 0 -> 26258 bytes renders/duck-chart.png | Bin 0 -> 12969 bytes renders/duck-line.PNG | Bin 0 -> 19680 bytes renders/duck-point.PNG | Bin 0 -> 9099 bytes renders/duck-texture.PNG | Bin 0 -> 67084 bytes renders/truck-chart.png | Bin 0 -> 11987 bytes renders/truck-line.PNG | Bin 0 -> 23648 bytes renders/truck-point.PNG | Bin 0 -> 8496 bytes renders/truck-texture.PNG | Bin 0 -> 55545 bytes src/rasterize.cu | 62 +++++++++++++++--- src/rasterize.h | 3 +- 14 files changed, 93 insertions(+), 19 deletions(-) create mode 100644 renders/checkerboard-no-bilinear.PNG create mode 100644 renders/checkerboard-no-perspective-no-bilinear.PNG create mode 100644 renders/checkerboard.PNG create mode 100644 renders/duck-chart.png create mode 100644 renders/duck-line.PNG create mode 100644 renders/duck-point.PNG create mode 100644 renders/duck-texture.PNG create mode 100644 renders/truck-chart.png create mode 100644 renders/truck-line.PNG create mode 100644 renders/truck-point.PNG create mode 100644 renders/truck-texture.PNG diff --git a/README.md b/README.md index 41b91f0..9e8c884 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,46 @@ CUDA Rasterizer **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 4** -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* Eric Chiu +* Tested on: Windows 10 Education, Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.60GHz 32GB, NVIDIA GeForce GTX 1070 (SIGLAB) -### (TODO: Your README) -*DO NOT* leave the README to the last minute! It is a crucial part of the -project, and we will not be able to grade you without a good README. +![](./renders/truck-texture.png) -### Credits +## Description -* [tinygltfloader](https://github.com/syoyo/tinygltfloader) by [@soyoyo](https://github.com/syoyo) -* [glTF Sample Models](https://github.com/KhronosGroup/glTF/blob/master/sampleModels/README.md) +This project implements a rasterized graphics pipeline using CUDA programming and GPU hardware. Features include lambertian shading, UV texture mapping, and point and line rasterization. + +## Analysis + + +![](./renders/duck-chart.png) + +![](./renders/truck-chart.png) + + +## UV Texture Mapping + + +![](./renders/checkerboard-no-perspective-no-bilinear.png) + +![](./renders/checkerboard-no-bilinear.png) + +![](./renders/checkerboard.png) + + +## Point and Line Rasterization + + +![](./renders/duck-point.png) + +![](./renders/truck-point.png) + +![](./renders/duck-line.png) + +![](./renders/truck-line.png) + +![](./renders/duck-texture.png) + +![](./renders/truck-texture.png) \ No newline at end of file diff --git a/renders/checkerboard-no-bilinear.PNG b/renders/checkerboard-no-bilinear.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d3e9b12483bc4d16bf708362fc33b3e2b42b0e9f GIT binary patch literal 19693 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 literal 0 HcmV?d00001 diff --git a/renders/checkerboard-no-perspective-no-bilinear.PNG b/renders/checkerboard-no-perspective-no-bilinear.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1d3e1095e692d5044c2f195deb9e0db974052e0e GIT binary patch literal 17401 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 KDKxr#_x}L?^cJoF literal 0 HcmV?d00001 diff --git a/renders/checkerboard.PNG b/renders/checkerboard.PNG new file mode 100644 index 0000000000000000000000000000000000000000..781b55301926985ea90220bae68e1bd365d470d5 GIT binary patch literal 26258 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 V{d?~$eq@H&VPU_$$jtl1e*krDhduxR literal 0 HcmV?d00001 diff --git a/renders/duck-chart.png b/renders/duck-chart.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ec6dae4fd1d735e350eea260769d31aad408d1 GIT binary patch literal 12969 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�lL}#z9LCS~;uH-JVj;BFuU+Gr+{A7arr) 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 literal 0 HcmV?d00001 diff --git a/renders/duck-point.PNG b/renders/duck-point.PNG new file mode 100644 index 0000000000000000000000000000000000000000..716cc44a700341a7161c9c1a910f14f45442b62b GIT binary patch literal 9099 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 J*Y7>@^*@qo=9mBg literal 0 HcmV?d00001 diff --git a/renders/truck-point.PNG b/renders/truck-point.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1ec7ea1f4268cbc2e86c7949a79e31416ba8ec0b GIT binary patch literal 8496 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℞XaWOXk&gX8QK#w$TqMHDP@6KQIHvd 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 #include +#include namespace { @@ -183,15 +184,15 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) // TODO: add your fragment shader code here Fragment fragment = fragmentBuffer[index]; - #if TEXTURE + #if TEXTURE == 1 if (fragment.dev_diffuseTex != NULL) { - #if BILINEAR + #if BILINEAR == 1 fragment.color = getBilinearFilteredPixelColor(fragment); #else int u = fragment.texcoord0.x * fragment.texWidth; int v = fragment.texcoord0.y * fragment.texHeight; - fragment.color = getColor(fragment.dev_diffuseTex, fragment.texWidth, u, v); + fragment.color = getTexColor(fragment.dev_diffuseTex, fragment.texWidth, u, v); #endif } #endif @@ -840,13 +841,13 @@ void _rasterizeTriangles(Fragment* dev_fragmentBuffer, Primitive& primitive, int + barycentricCoord.z * (v2.texcoord0 / v2.eyePos.z)); // no perspective correct #else - fragment.texcoord0 = barycentric.x * v0.texcoord0 + barycentric.y * v1.texcoord0 + barycentric.z * v2.texcoord0; + fragment.texcoord0 = barycentricCoord.x * v0.texcoord0 + barycentricCoord.y * v1.texcoord0 + barycentricCoord.z * v2.texcoord0; #endif // do not use texture color #else fragment.dev_diffuseTex = NULL; // default use vertex normal as color - fragment.color = fragment.eyeNor + fragment.color = fragment.eyeNor; #endif const int fragIndex = x + (y * width); @@ -899,7 +900,8 @@ void _rasterize(int totalNumPrimitives, Primitive* dev_primitives, /** * Perform rasterization. */ -void rasterize(uchar4 *pbo, const glm::mat4 & MVP, const glm::mat4 & MV, const glm::mat3 MV_normal) { +void rasterize(uchar4 *pbo, const glm::mat4 & MVP, const glm::mat4 & MV, const glm::mat3 MV_normal) +{ int sideLength2d = 8; dim3 blockSize2d(sideLength2d, sideLength2d); dim3 blockCount2d((width - 1) / blockSize2d.x + 1, @@ -916,7 +918,13 @@ void rasterize(uchar4 *pbo, const glm::mat4 & MVP, const glm::mat4 & MV, const g auto it = mesh2PrimitivesMap.begin(); auto itEnd = mesh2PrimitivesMap.end(); - for (; it != itEnd; ++it) { + #if TIMER + using time_point_t = std::chrono::high_resolution_clock::time_point; + time_point_t start_time = std::chrono::high_resolution_clock::now(); + #endif + + for (; it != itEnd; ++it) + { auto p = (it->second).begin(); // each primitive auto pEnd = (it->second).end(); for (; p != pEnd; ++p) { @@ -936,21 +944,57 @@ void rasterize(uchar4 *pbo, const glm::mat4 & MVP, const glm::mat4 & MV, const g curPrimitiveBeginId += p->numPrimitives; } } - checkCUDAError("Vertex Processing and Primitive Assembly"); + + #if TIMER + cudaDeviceSynchronize(); + time_point_t end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration dur = end_time - start_time; + float elapsed_time = static_cast(dur.count()); + std::cout << std::endl; + std::cout << "Vertex Processing and Primitive Assembly: " << elapsed_time << " milliseconds." << std::endl; + #endif + } - + cudaMemset(dev_fragmentBuffer, 0, width * height * sizeof(Fragment)); initDepth << > >(width, height, dev_depth); + + #if TIMER + using time_point_t = std::chrono::high_resolution_clock::time_point; + time_point_t start_time = std::chrono::high_resolution_clock::now(); + #endif + // TODO: rasterize dim3 numThreadsPerBlock(128); dim3 numBlocksForPrimitives = (totalNumPrimitives + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x; _rasterize << > > (totalNumPrimitives, dev_primitives, dev_fragmentBuffer, dev_depth, dev_mutex, width, height); + #if TIMER + cudaDeviceSynchronize(); + time_point_t end_time = std::chrono::high_resolution_clock::now(); + std::chrono::duration dur = end_time - start_time; + float elapsed_time = static_cast(dur.count()); + std::cout << "Rasterization: " << elapsed_time << " milliseconds." << std::endl; + #endif + + #if TIMER + start_time = std::chrono::high_resolution_clock::now(); + #endif + // Copy depthbuffer colors into framebuffer render << > >(width, height, dev_fragmentBuffer, dev_framebuffer); checkCUDAError("fragment shader"); + + #if TIMER + cudaDeviceSynchronize(); + end_time = std::chrono::high_resolution_clock::now(); + dur = end_time - start_time; + elapsed_time = static_cast(dur.count()); + std::cout << "Fragment Shader: " << elapsed_time << " milliseconds." << std::endl; + #endif + // Copy framebuffer into OpenGL buffer for OpenGL previewing sendImageToPBO<<>>(pbo, width, height, dev_framebuffer); checkCUDAError("copy render result to pbo"); diff --git a/src/rasterize.h b/src/rasterize.h index 361c207..2ff6128 100644 --- a/src/rasterize.h +++ b/src/rasterize.h @@ -12,11 +12,12 @@ #include #include +#define TIMER 1 #define TEXTURE 1 #define PERSPECTIVE 1 #define BILINEAR 1 // PRIMTYPE: 1 = Point, 2 = Line, 3 = Triangle -#define PRIMTYPE 2 +#define PRIMTYPE 1 namespace tinygltf{ class Scene; From e6a061feb05ae996795bc3e42fb145c1e351c4be Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Tue, 16 Oct 2018 23:20:43 -0400 Subject: [PATCH 6/7] corrected images --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9e8c884..1510c63 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ CUDA Rasterizer * Tested on: Windows 10 Education, Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.60GHz 32GB, NVIDIA GeForce GTX 1070 (SIGLAB) -![](./renders/truck-texture.png) +![](./renders/truck-texture.PNG) ## Description @@ -27,24 +27,24 @@ This project implements a rasterized graphics pipeline using CUDA programming an ## UV Texture Mapping -![](./renders/checkerboard-no-perspective-no-bilinear.png) +![](./renders/checkerboard-no-perspective-no-bilinear.PNG) -![](./renders/checkerboard-no-bilinear.png) +![](./renders/checkerboard-no-bilinear.PNG) -![](./renders/checkerboard.png) +![](./renders/checkerboard.PNG) ## Point and Line Rasterization -![](./renders/duck-point.png) +![](./renders/duck-point.PNG) -![](./renders/truck-point.png) +![](./renders/truck-point.PNG) -![](./renders/duck-line.png) +![](./renders/duck-line.PNG) -![](./renders/truck-line.png) +![](./renders/truck-line.PNG) -![](./renders/duck-texture.png) +![](./renders/duck-texture.PNG) -![](./renders/truck-texture.png) \ No newline at end of file +![](./renders/truck-texture.PNG) \ No newline at end of file From deb37416a262f39fb0e5744bf5e72c6be5476133 Mon Sep 17 00:00:00 2001 From: echiu1997 Date: Tue, 16 Oct 2018 23:47:24 -0400 Subject: [PATCH 7/7] finsihed readme --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1510c63..6dd8396 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,9 @@ CUDA Rasterizer This project implements a rasterized graphics pipeline using CUDA programming and GPU hardware. Features include lambertian shading, UV texture mapping, and point and line rasterization. -## Analysis +## Performance Analysis +The following charts show a time breakdown for rasterizing the duck and truck model with various settings: point rasterization, line rasterization, triangle rasterization, and triangle rasterization with perspective correct UV mapping and bilinear texture filtering. We can see that the primitive assembly and vertex shading stages are same throughout the various settings, and the majority of the pipline is spent in the rasterization and fragment shader stages. This is probably because there are more fragments and triangles than vertices that the computer has to process. Another observation is that for the truck, the rasterization stage takes significantly longer with triangle rasterization. A possbile explanation is that the truck model covers many more pixels on the screen than the duck model, so our rasterizer has to iterate through more pixels. ![](./renders/duck-chart.png) @@ -26,16 +27,22 @@ This project implements a rasterized graphics pipeline using CUDA programming an ## UV Texture Mapping +When UV texture mapping with barycentric coordinates, without the consideration of depth information and perspective correctness, bending artifacts start to appear on the object as shown below. ![](./renders/checkerboard-no-perspective-no-bilinear.PNG) +By taking into consideration of depth information from interpolated positions of triangles, the texture coordinates become perspective transformed, as shown below. + ![](./renders/checkerboard-no-bilinear.PNG) +We can further improve UV texture mapping by anti-aliasing using a method called bilinear filtering. The idea of bilinear filtering is that instead of sampling a texture at a single point, we interpolate the color values of the four pixels around the selected point. This will remove jagged texture edges as shown below. + ![](./renders/checkerboard.PNG) ## Point and Line Rasterization +Another feature of this rasterizer is point cloud and wireframe display. This can be achieved by adding a primitive type flag and modifying the rasterization stage, so that it processes vertex information differently depending on the primitive type. ![](./renders/duck-point.PNG)