From b835fd54acf75bfcdf5e886e0bfad16753f3c205 Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 14:20:03 -0400 Subject: [PATCH 1/8] Modified the architecture --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a57f69f..d9247c3 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_60 ) From 0180c5e458672f8be90e1e43de36f20fdceb04a2 Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 18:58:22 -0400 Subject: [PATCH 2/8] Bilinear filtering --- src/rasterize.cu | 113 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 104 insertions(+), 9 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index 1262a09..f097e53 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -18,6 +18,11 @@ #include #include +#define DISPLAY_TRIANGLE true +#define DISPLAY_NORMAL true +#define DISPLAY_LINE true +#define DISPLAY_POINT true + namespace { typedef unsigned short VertexIndex; @@ -46,8 +51,9 @@ namespace { // glm::vec3 col; glm::vec2 texcoord0; TextureData* dev_diffuseTex = NULL; - // int texWidth, texHeight; - // ... + + int texWidth; + int texHeight; }; struct Primitive { @@ -62,10 +68,13 @@ 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; + + int texWidth; + int texHeight; // ... }; @@ -133,9 +142,17 @@ void sendImageToPBO(uchar4 *pbo, int w, int h, glm::vec3 *image) { } } +const glm::vec3 lightPosition(50.0f, 50.0f, 100.0f); + /** * Writes fragment colors to the framebuffer */ + +glm::vec3 lerp(const glm::vec3 &x, const glm::vec3 &y, const float &alpha) +{ + return (1.0f - alpha) * x + alpha * y; +} + __global__ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { int x = (blockIdx.x * blockDim.x) + threadIdx.x; @@ -146,8 +163,70 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { framebuffer[index] = fragmentBuffer[index].color; // TODO: add your fragment shader code here + glm::vec3 &pixel = framebuffer[index]; + pixel = glm::vec3(0.0f); + const Fragment &frag = fragmentBuffer[index]; - } + glm::vec3 L = lightPosition - frag.eyePos; + L = glm::normalize(L); + + const glm::vec3 &N = frag.eyeNor; + glm::vec3 V = glm::normalize(-N); + glm::vec3 H = glm::normalize(V + L); + + glm::vec3 finalOutput(1.0f, 1.0f, 1.0f); + glm::vec3 texelFetched = glm::vec3(0.0f, 0.0f, 0.0f); + + if (frag.dev_diffuseTex != NULL) + { + int texWidth = frag.texWidth; + int texHeight = frag.texHeight; + + for (int i = 0; i < 4; ++i) + { + float x = (texWidth - 1.0f) * fragmentBuffer[index].texcoord0[0]; + float y = (texHeight - 1.0f) * fragmentBuffer[index].texcoord0[1]; + + int xLower = std::floor(x); + int yLower = std::floor(y); + int xUpper = (xLower + 1) % texWidth; + int yUpper = (yLower + 1) % texHeight; + int idxLowerLeft = xLower + yLower * texWidth; + int idxLowerRight = xUpper + yLower * texWidth; + int idxUpperLeft = xLower + yUpper * texWidth; + int idxUpperRight = xUpper + yUpper * texWidth; + + glm::vec3 lowerLeftTexel = glm::vec3(frag.dev_diffuseTex[idxLowerLeft * 3], + frag.dev_diffuseTex[idxLowerLeft * 3 + 1], frag.dev_diffuseTex[idxLowerLeft * 3 + 2]); + glm::vec3 lowerRightTexel = glm::vec3(frag.dev_diffuseTex[idxLowerRight * 3], + frag.dev_diffuseTex[idxLowerRight * 3 + 1], frag.dev_diffuseTex[idxLowerRight * 3 + 2]); + glm::vec3 upperLeftTexel = glm::vec3(frag.dev_diffuseTex[idxUpperLeft * 3], + frag.dev_diffuseTex[idxUpperLeft * 3 + 1], frag.dev_diffuseTex[idxUpperLeft * 3 + 2]); + glm::vec3 upperRightTexel = glm::vec3(frag.dev_diffuseTex[idxUpperRight * 3], + frag.dev_diffuseTex[idxUpperRight * 3 + 1], frag.dev_diffuseTex[idxUpperRight * 3 + 2]); + //Coefs for bilinear filtering + float alphaX = x - static_cast(xLower); + float alphaY = y - static_cast(yLower); + + glm::vec3 lowerBelt = lerp(lowerLeftTexel, lowerRightTexel, alphaX); + glm::vec3 upperBelt = lerp(upperLeftTexel, upperRightTexel, alphaX); + texelFetched = lerp(lowerBelt, upperBelt, alphaY); + } + } + + if (DISPLAY_TRIANGLE) + { + pixel = glm::max(0.f, glm::dot(L, N)) * texelFetched; + } + else if (DISPLAY_NORMAL) + { + pixel = glm::normalize(frag.eyeNor); + } + else if (DISPLAY_LINE || DISPLAY_POINT) + { + pixel = glm::normalize(frag.color); + } + } } /** @@ -638,10 +717,26 @@ void _vertexTransformAndAssembly( // 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 - + VertexOut &vertexV = primitive.dev_verticesOut[vid]; + const glm::vec3 &pos = primitive.dev_position[vid]; + const glm::vec3 &nor = primitive.dev_normal[vid]; + + glm::vec4 extendedPos = glm::vec4(pos, 1.0f); + vertexV.pos = MVP * extendedPos; + vertexV.pos.x = (1.0f - vertexV.pos.x) * 0.5f * width; + vertexV.pos.y = (1.0f - vertexV.pos.y) * 0.5f * height; // TODO: Apply vertex assembly here // Assemble all attribute arraies into the primitive array - + vertexV.eyePos = multiplyMV(MV, extendedPos); + vertexV.eyeNor = MV_normal * nor; + + if (primitive.dev_texcoord0 != NULL) + { + vertexV.texcoord0 = primitive.dev_texcoord0[vid]; + } + vertexV.dev_diffuseTex = primitive.dev_diffuseTex; + vertexV.texWidth = primitive.diffuseTexWidth; + vertexV.texHeight = primitive.diffuseTexHeight; } } From f838c1bc70d99f930f9293c9d4b398f8609b53d2 Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 20:25:09 -0400 Subject: [PATCH 3/8] Rasterizer undone yet --- src/rasterize.cu | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index f097e53..ed7bdb4 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -755,15 +755,26 @@ void _primitiveAssembly(int numIndices, int curPrimitiveBeginId, Primitive* dev_ // 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].primitiveType = Triangle; + dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] + = primitive.dev_verticesOut[primitive.dev_indices[iid]]; + } // TODO: other primitive types (point, line) + else if (primitive.primitiveMode == TINYGLTF_MODE_LINE) { + pid = iid / (int)primitive.primitiveType; + dev_primitives[pid + curPrimitiveBeginId].primitiveType = Line; + dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] + = primitive.dev_verticesOut[primitive.dev_indices[iid]]; + } + else if (primitive.primitiveMode == TINYGLTF_MODE_POINTS) { + pid = iid / (int)primitive.primitiveType; + dev_primitives[pid + curPrimitiveBeginId].primitiveType = Point; + dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] + = primitive.dev_verticesOut[primitive.dev_indices[iid]]; + } } } From acba6359e882c72d61460378b8e5c340e3ee608b Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 23:06:16 -0400 Subject: [PATCH 4/8] Rasterizer completed but some primitives are not supported yet --- src/rasterize.cu | 685 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 481 insertions(+), 204 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index ed7bdb4..0ccb9ed 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -18,10 +18,13 @@ #include #include -#define DISPLAY_TRIANGLE true -#define DISPLAY_NORMAL true +#define DISPLAY_TRIANGLE false #define DISPLAY_LINE true -#define DISPLAY_POINT true +#define DISPLAY_POINT false + +#define CULL_FACE true +#define DISPLAY_NORMAL false +#define MUTEX_ON false namespace { @@ -33,7 +36,7 @@ namespace { typedef unsigned char BufferByte; - enum PrimitiveType{ + enum PrimitiveType { Point = 1, Line = 2, Triangle = 3 @@ -46,14 +49,13 @@ 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 col; - glm::vec2 texcoord0; - TextureData* dev_diffuseTex = NULL; + glm::vec3 eyePos; + glm::vec3 eyeNor; - int texWidth; - int texHeight; + glm::vec2 texcoord0; + TextureData* dev_diffuseTex = NULL; + int texWidth; + int texHeight; }; struct Primitive { @@ -68,14 +70,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 eyePos; glm::vec3 eyeNor; VertexAttributeTexcoord texcoord0; TextureData* dev_diffuseTex; - int texWidth; int texHeight; - // ... }; struct PrimitiveDevBufPointers { @@ -104,12 +104,10 @@ namespace { // TODO: add more attributes when needed }; - } static std::map> mesh2PrimitivesMap; - static int width = 0; static int height = 0; @@ -117,139 +115,141 @@ static int totalNumPrimitives = 0; static Primitive *dev_primitives = NULL; 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 unsigned int *dev_mutex = NULL; +static float *dev_depth = NULL; /** - * Kernel that writes the image to the OpenGL PBO directly. - */ -__global__ +* Kernel that writes the image to the OpenGL PBO directly. +*/ +__global__ void sendImageToPBO(uchar4 *pbo, int w, int h, glm::vec3 *image) { - 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) { - glm::vec3 color; - color.x = glm::clamp(image[index].x, 0.0f, 1.0f) * 255.0; - color.y = glm::clamp(image[index].y, 0.0f, 1.0f) * 255.0; - color.z = glm::clamp(image[index].z, 0.0f, 1.0f) * 255.0; - // Each thread writes one pixel location in the texture (textel) - pbo[index].w = 0; - pbo[index].x = color.x; - pbo[index].y = color.y; - pbo[index].z = color.z; - } -} + int x = (blockIdx.x * blockDim.x) + threadIdx.x; + int y = (blockIdx.y * blockDim.y) + threadIdx.y; + int index = x + (y * w); -const glm::vec3 lightPosition(50.0f, 50.0f, 100.0f); + if (x < w && y < h) { + glm::vec3 color; + color.x = glm::clamp(image[index].x, 0.0f, 1.0f) * 255.0; + color.y = glm::clamp(image[index].y, 0.0f, 1.0f) * 255.0; + color.z = glm::clamp(image[index].z, 0.0f, 1.0f) * 255.0; + // Each thread writes one pixel location in the texture (textel) + pbo[index].w = 0; + pbo[index].x = color.x; + pbo[index].y = color.y; + pbo[index].z = color.z; + } +} -/** +/** * Writes fragment colors to the framebuffer */ -glm::vec3 lerp(const glm::vec3 &x, const glm::vec3 &y, const float &alpha) +static __host__ __device__ glm::vec3 lerp(const glm::vec3 &x, const glm::vec3 &y, const float &alpha) { return (1.0f - alpha) * x + alpha * y; } __global__ 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); + 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; + if (x < w && y < h) { + framebuffer[index] = fragmentBuffer[index].color; // TODO: add your fragment shader code here - glm::vec3 &pixel = framebuffer[index]; - pixel = glm::vec3(0.0f); + int index = x + (y * w); + glm::vec3 &buffer = framebuffer[index]; const Fragment &frag = fragmentBuffer[index]; + const glm::vec3 lightDir(50.f, 50.f, 100.f); - glm::vec3 L = lightPosition - frag.eyePos; - L = glm::normalize(L); + // clear frame buffer + buffer = glm::vec3(0.f); + const glm::vec3 L = glm::normalize(lightDir - frag.eyePos); const glm::vec3 &N = frag.eyeNor; - glm::vec3 V = glm::normalize(-N); - glm::vec3 H = glm::normalize(V + L); + const glm::vec3 V = glm::normalize(-frag.eyePos); + const glm::vec3 H = glm::normalize(V + L); - glm::vec3 finalOutput(1.0f, 1.0f, 1.0f); - glm::vec3 texelFetched = glm::vec3(0.0f, 0.0f, 0.0f); - - if (frag.dev_diffuseTex != NULL) - { - int texWidth = frag.texWidth; - int texHeight = frag.texHeight; + glm::vec3 texelFetched = glm::vec3(255.0f, 255.0f, 255.0f); - for (int i = 0; i < 4; ++i) - { - float x = (texWidth - 1.0f) * fragmentBuffer[index].texcoord0[0]; - float y = (texHeight - 1.0f) * fragmentBuffer[index].texcoord0[1]; - - int xLower = std::floor(x); - int yLower = std::floor(y); - int xUpper = (xLower + 1) % texWidth; - int yUpper = (yLower + 1) % texHeight; - int idxLowerLeft = xLower + yLower * texWidth; - int idxLowerRight = xUpper + yLower * texWidth; - int idxUpperLeft = xLower + yUpper * texWidth; - int idxUpperRight = xUpper + yUpper * texWidth; - - glm::vec3 lowerLeftTexel = glm::vec3(frag.dev_diffuseTex[idxLowerLeft * 3], - frag.dev_diffuseTex[idxLowerLeft * 3 + 1], frag.dev_diffuseTex[idxLowerLeft * 3 + 2]); - glm::vec3 lowerRightTexel = glm::vec3(frag.dev_diffuseTex[idxLowerRight * 3], - frag.dev_diffuseTex[idxLowerRight * 3 + 1], frag.dev_diffuseTex[idxLowerRight * 3 + 2]); - glm::vec3 upperLeftTexel = glm::vec3(frag.dev_diffuseTex[idxUpperLeft * 3], - frag.dev_diffuseTex[idxUpperLeft * 3 + 1], frag.dev_diffuseTex[idxUpperLeft * 3 + 2]); - glm::vec3 upperRightTexel = glm::vec3(frag.dev_diffuseTex[idxUpperRight * 3], - frag.dev_diffuseTex[idxUpperRight * 3 + 1], frag.dev_diffuseTex[idxUpperRight * 3 + 2]); - //Coefs for bilinear filtering - float alphaX = x - static_cast(xLower); - float alphaY = y - static_cast(yLower); - - glm::vec3 lowerBelt = lerp(lowerLeftTexel, lowerRightTexel, alphaX); - glm::vec3 upperBelt = lerp(upperLeftTexel, upperRightTexel, alphaX); - texelFetched = lerp(lowerBelt, upperBelt, alphaY); - } - } - - if (DISPLAY_TRIANGLE) + if (frag.dev_diffuseTex != NULL) { - pixel = glm::max(0.f, glm::dot(L, N)) * texelFetched; + int texW = frag.texWidth; + int texH = frag.texHeight; + + float x = (texW - 1.0f) * fragmentBuffer[index].texcoord0[0]; + float y = (texH - 1.0f) * fragmentBuffer[index].texcoord0[1]; + + int xLower = std::floor(x); + int yLower = std::floor(y); + int xUpper = (xLower + 1) % texW; + int yUpper = (yLower + 1) % texH; + int idxLowerLeft = xLower + yLower * texW; + int idxLowerRight = xUpper + yLower * texW; + int idxUpperLeft = xLower + yUpper * texW; + int idxUpperRight = xUpper + yUpper * texW; + + glm::vec3 lowerLeftTexel = glm::vec3(frag.dev_diffuseTex[idxLowerLeft * 3], + frag.dev_diffuseTex[idxLowerLeft * 3 + 1], frag.dev_diffuseTex[idxLowerLeft * 3 + 2]); + glm::vec3 lowerRightTexel = glm::vec3(frag.dev_diffuseTex[idxLowerRight * 3], + frag.dev_diffuseTex[idxLowerRight * 3 + 1], frag.dev_diffuseTex[idxLowerRight * 3 + 2]); + glm::vec3 upperLeftTexel = glm::vec3(frag.dev_diffuseTex[idxUpperLeft * 3], + frag.dev_diffuseTex[idxUpperLeft * 3 + 1], frag.dev_diffuseTex[idxUpperLeft * 3 + 2]); + glm::vec3 upperRightTexel = glm::vec3(frag.dev_diffuseTex[idxUpperRight * 3], + frag.dev_diffuseTex[idxUpperRight * 3 + 1], frag.dev_diffuseTex[idxUpperRight * 3 + 2]); + //Coefs for bilinear filtering + float alphaX = x - static_cast(xLower); + float alphaY = y - static_cast(yLower); + + glm::vec3 lowerBelt = lerp(lowerLeftTexel, lowerRightTexel, alphaX); + glm::vec3 upperBelt = lerp(upperLeftTexel, upperRightTexel, alphaX); + + texelFetched = lerp(lowerBelt, upperBelt, alphaY); + } - else if (DISPLAY_NORMAL) + + const float factor = 1.0f / 255.0f; + glm::vec3 colorNormalized = factor * texelFetched; + if (DISPLAY_TRIANGLE || DISPLAY_POINT || DISPLAY_LINE) { - pixel = glm::normalize(frag.eyeNor); + buffer = glm::max(0.f, glm::dot(L, N)) * colorNormalized; } - else if (DISPLAY_LINE || DISPLAY_POINT) + if (DISPLAY_NORMAL) { - pixel = glm::normalize(frag.color); + glm::vec3 norm = frag.eyeNor; + buffer = glm::normalize(norm); } + + buffer += glm::vec3(pow(glm::max(0.f, glm::dot(N, H)), 200.f)); + //buffer = glm::normalize(buffer); } } /** - * Called once at the beginning of the program to allocate memory. - */ +* Called once at the beginning of the program to allocate memory. +*/ void rasterizeInit(int w, int h) { - width = w; - height = 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)); - - cudaFree(dev_depth); - cudaMalloc(&dev_depth, width * height * sizeof(int)); + cudaFree(dev_framebuffer); + cudaMalloc(&dev_framebuffer, width * height * sizeof(glm::vec3)); + cudaMemset(dev_framebuffer, 0, width * height * sizeof(glm::vec3)); + cudaFree(dev_depth); + cudaMalloc(&dev_depth, width * height * sizeof(float)); + //==================================== + cudaMalloc(&dev_mutex, width * height * sizeof(unsigned int)); + cudaMemset(dev_mutex, 0, width * height * sizeof(unsigned int)); checkCUDAError("rasterizeInit"); } __global__ -void initDepth(int w, int h, int * depth) +void initDepth(int w, int h, float * depth) { int x = (blockIdx.x * blockDim.x) + threadIdx.x; int y = (blockIdx.y * blockDim.y) + threadIdx.y; @@ -266,9 +266,9 @@ void initDepth(int w, int h, int * depth) * kern function with support for stride to sometimes replace cudaMemcpy * One thread is responsible for copying one component */ -__global__ +__global__ void _deviceBufferCopy(int N, BufferByte* dev_dst, const BufferByte* dev_src, int n, int byteStride, int byteOffset, int componentTypeByteSize) { - + // Attribute (vec3 position) // component (3 * float) // byte (4 * byte) @@ -281,20 +281,20 @@ void _deviceBufferCopy(int N, BufferByte* dev_dst, const BufferByte* dev_src, in int offset = i - count * n; // which component of the attribute for (int j = 0; j < componentTypeByteSize; j++) { - - dev_dst[count * componentTypeByteSize * n - + offset * componentTypeByteSize + + dev_dst[count * componentTypeByteSize * n + + offset * componentTypeByteSize + j] - = + = - dev_src[byteOffset - + count * (byteStride == 0 ? componentTypeByteSize * n : byteStride) - + offset * componentTypeByteSize + dev_src[byteOffset + + count * (byteStride == 0 ? componentTypeByteSize * n : byteStride) + + offset * componentTypeByteSize + j]; } } - + } @@ -314,7 +314,7 @@ void _nodeMatrixTransform( } glm::mat4 getMatrixFromNodeMatrixVector(const tinygltf::Node & n) { - + glm::mat4 curMatrix(1.0); const std::vector &m = n.matrix; @@ -326,7 +326,8 @@ glm::mat4 getMatrixFromNodeMatrixVector(const tinygltf::Node & n) { curMatrix[i][j] = (float)m.at(4 * i + j); } } - } else { + } + else { // no matrix, use rotation, scale, translation if (n.translation.size() > 0) { @@ -354,12 +355,12 @@ glm::mat4 getMatrixFromNodeMatrixVector(const tinygltf::Node & n) { return curMatrix; } -void traverseNode ( +void traverseNode( std::map & n2m, const tinygltf::Scene & scene, const std::string & nodeString, const glm::mat4 & parentMatrix - ) +) { const tinygltf::Node & n = scene.nodes.at(nodeString); glm::mat4 M = parentMatrix * getMatrixFromNodeMatrixVector(n); @@ -616,7 +617,7 @@ void rasterizeSetBuffers(const tinygltf::Scene & scene) { size_t s = image.image.size() * sizeof(TextureData); cudaMalloc(&dev_diffuseTex, s); cudaMemcpy(dev_diffuseTex, &image.image.at(0), s, cudaMemcpyHostToDevice); - + diffuseTexWidth = image.width; diffuseTexHeight = image.height; @@ -633,7 +634,7 @@ void rasterizeSetBuffers(const tinygltf::Scene & scene) { // ---------Node hierarchy transform-------- cudaDeviceSynchronize(); - + dim3 numBlocksNodeTransform((numVertices + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); _nodeMatrixTransform << > > ( numVertices, @@ -674,21 +675,21 @@ void rasterizeSetBuffers(const tinygltf::Scene & scene) { } // for each node } - + // 3. Malloc for dev_primitives { cudaMalloc(&dev_primitives, totalNumPrimitives * sizeof(Primitive)); } - + // Finally, cudaFree raw dev_bufferViews { std::map::const_iterator it(bufferViewDevPointers.begin()); std::map::const_iterator itEnd(bufferViewDevPointers.end()); - - //bufferViewDevPointers + + //bufferViewDevPointers for (; it != itEnd; it++) { cudaFree(it->second); @@ -702,41 +703,39 @@ void rasterizeSetBuffers(const tinygltf::Scene & scene) { -__global__ +__global__ void _vertexTransformAndAssembly( - int numVertices, - PrimitiveDevBufPointers primitive, - glm::mat4 MVP, glm::mat4 MV, glm::mat3 MV_normal, + int numVertices, + PrimitiveDevBufPointers primitive, + glm::mat4 MVP, glm::mat4 MV, glm::mat3 MV_normal, int width, int height) { // vertex id int vid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (vid < numVertices) { - + VertexOut &out = primitive.dev_verticesOut[vid]; + const glm::vec3 &pos = primitive.dev_position[vid]; + const glm::vec3 &nor = primitive.dev_normal[vid]; + 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 - VertexOut &vertexV = primitive.dev_verticesOut[vid]; - const glm::vec3 &pos = primitive.dev_position[vid]; - const glm::vec3 &nor = primitive.dev_normal[vid]; - - glm::vec4 extendedPos = glm::vec4(pos, 1.0f); - vertexV.pos = MVP * extendedPos; - vertexV.pos.x = (1.0f - vertexV.pos.x) * 0.5f * width; - vertexV.pos.y = (1.0f - vertexV.pos.y) * 0.5f * height; + out.pos = MVP * glm::vec4(pos, 1.f); + out.pos /= out.pos.w; + out.pos.x = (1.f - out.pos.x) * .5f * width; + out.pos.y = (1.f - out.pos.y) * .5f * height; // TODO: Apply vertex assembly here // Assemble all attribute arraies into the primitive array - vertexV.eyePos = multiplyMV(MV, extendedPos); - vertexV.eyeNor = MV_normal * nor; - + out.eyePos = multiplyMV(MV, glm::vec4(pos, 1.f)); + out.eyeNor = glm::normalize(MV_normal * nor); if (primitive.dev_texcoord0 != NULL) { - vertexV.texcoord0 = primitive.dev_texcoord0[vid]; + out.texcoord0 = primitive.dev_texcoord0[vid]; } - vertexV.dev_diffuseTex = primitive.dev_diffuseTex; - vertexV.texWidth = primitive.diffuseTexWidth; - vertexV.texHeight = primitive.diffuseTexHeight; + out.dev_diffuseTex = primitive.dev_diffuseTex; + out.texWidth = primitive.diffuseTexWidth; + out.texHeight = primitive.diffuseTexHeight; } } @@ -744,7 +743,7 @@ void _vertexTransformAndAssembly( static int curPrimitiveBeginId = 0; -__global__ +__global__ void _primitiveAssembly(int numIndices, int curPrimitiveBeginId, Primitive* dev_primitives, PrimitiveDevBufPointers primitive) { // index id @@ -755,97 +754,374 @@ void _primitiveAssembly(int numIndices, int curPrimitiveBeginId, Primitive* dev_ // 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) { + int pid; + + if (primitive.primitiveMode == TINYGLTF_MODE_TRIANGLES) + { pid = iid / (int)primitive.primitiveType; dev_primitives[pid + curPrimitiveBeginId].primitiveType = Triangle; dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] = primitive.dev_verticesOut[primitive.dev_indices[iid]]; } - // TODO: other primitive types (point, line) - else if (primitive.primitiveMode == TINYGLTF_MODE_LINE) { + else if (primitive.primitiveMode == TINYGLTF_MODE_LINE) + { pid = iid / (int)primitive.primitiveType; dev_primitives[pid + curPrimitiveBeginId].primitiveType = Line; dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] = primitive.dev_verticesOut[primitive.dev_indices[iid]]; } - else if (primitive.primitiveMode == TINYGLTF_MODE_POINTS) { + else if (primitive.primitiveMode == TINYGLTF_MODE_POINTS) + { pid = iid / (int)primitive.primitiveType; dev_primitives[pid + curPrimitiveBeginId].primitiveType = Point; dev_primitives[pid + curPrimitiveBeginId].v[iid % (int)primitive.primitiveType] = primitive.dev_verticesOut[primitive.dev_indices[iid]]; } } - } +__host__ __device__ glm::vec2 getVec2AtCoord(const glm::vec3 &baryCoord, const glm::vec2 input[3]) +{ + return baryCoord.x * input[0] + baryCoord.y * input[1] + baryCoord.z * input[2]; +} +__host__ __device__ float getFloatAtCoord(const glm::vec3 barycentricCoord, const float input[3]) +{ + return barycentricCoord.x * input[0] + barycentricCoord.y * input[1] + barycentricCoord.z * input[2]; +} +__host__ __device__ glm::vec3 getVec3AtCoord(const glm::vec3 barycentricCoord, const glm::vec3 input[3]) +{ + return barycentricCoord.x * input[0] + barycentricCoord.y * input[1] + barycentricCoord.z * input[2]; +} +__host__ __device__ glm::vec2 getTexcoordAtCoord(const glm::vec3 &baryCoord, + const glm::vec2 _texcoord[3], const float triDepth_1[3]) +{ + const glm::vec2 texcoord[3] = + { + _texcoord[0] * triDepth_1[0], + _texcoord[1] * triDepth_1[1], + _texcoord[2] * triDepth_1[2] + }; + const glm::vec2 numerator = getVec2AtCoord(baryCoord, texcoord); + const float denomenator = getFloatAtCoord(baryCoord, triDepth_1); + + return numerator / denomenator; +} + +__global__ +void rasterizePrimitive(int totalNumPrimitives, Primitive *dev_primitives, + Fragment *dev_fragmentBuffer, float *dev_depth, int width, int height, + unsigned int *dev_mutex) +{ + int idx = blockDim.x * blockIdx.x + threadIdx.x; + + if (idx >= totalNumPrimitives) + { + return; + } + + const Primitive &primitive = dev_primitives[idx]; + const glm::vec3 tri[3] = + { + glm::vec3(primitive.v[0].pos), + glm::vec3(primitive.v[1].pos), + glm::vec3(primitive.v[2].pos), + }; + const glm::vec3 eyePos[3] = + { + primitive.v[0].eyePos, + primitive.v[1].eyePos, + primitive.v[2].eyePos + }; + const glm::vec3 eyeNor[3] = + { + primitive.v[0].eyeNor, + primitive.v[1].eyeNor, + primitive.v[2].eyeNor + }; + const glm::vec2 texcoord0[3] = + { + primitive.v[0].texcoord0, + primitive.v[1].texcoord0, + primitive.v[2].texcoord0 + }; + const float triDepth_1[3] = + { + 1.f / tri[0].z, + 1.f / tri[1].z, + 1.f / tri[2].z + }; + + if (primitive.primitiveType == Triangle) + { + TextureData *pDiffuseTexData = primitive.v[0].dev_diffuseTex; + int diffuseTexWidth = 0; + int diffuseTexHeight = 0; + + if (CULL_FACE) + { + if (calculateSignedArea(tri) >= 0.f) + { + return; + } + } + + if (pDiffuseTexData != NULL) + { + diffuseTexWidth = primitive.v[0].texWidth; + diffuseTexHeight = primitive.v[0].texHeight; + } + + const AABB aabb = getAABBForTriangle(tri); + + const int left = glm::max(0, (int)aabb.min.x - 1); + const int right = glm::min(width, (int)aabb.max.x + 1); + const int bottom = glm::max(0, (int)aabb.min.y - 1); + const int top = glm::min(height, (int)aabb.max.y + 1); + + if (left >= right || bottom >= top) + { + return; + } + + for (int i = left; i < right; ++i) + { + for (int j = bottom; j < top; ++j) + { + const int pixelId = i + j * width; + const glm::vec2 p(i + .5f, j + .5f); + const glm::vec3 baryCoord = calculateBarycentricCoordinate(tri, p); + + // outsides triangle + if (!isBarycentricCoordInBounds(baryCoord)) continue; + + const float z = getZAtCoordinate(baryCoord, eyePos); + // too far or too near + //if (z < 0.f || z > 1.f) continue; + + // depth test, account for race condition when accessing depth buffer + const float depth = z; + bool isOccluded = true; + + if (MUTEX_ON) + { + bool isSet = false; + while (!isSet) + { + isSet = atomicCAS(&dev_mutex[pixelId], 0, 1) == 0; + if (isSet) + { + if (dev_depth[pixelId] > depth) + { + dev_depth[pixelId] = depth; + isOccluded = false; + } + dev_mutex[pixelId] = 0; + } + } + } + else + { + if (dev_depth[pixelId] > depth) + { + dev_depth[pixelId] = depth; + isOccluded = false; + } + } + + if (isOccluded) + { + continue; + } + + Fragment &fragment = dev_fragmentBuffer[pixelId]; + fragment.eyePos = getVec3AtCoord(baryCoord, eyePos); + fragment.eyeNor = glm::normalize(getVec3AtCoord(baryCoord, eyeNor)); + fragment.texcoord0 = getTexcoordAtCoord(baryCoord, texcoord0, triDepth_1); + if (pDiffuseTexData != NULL) + { + fragment.dev_diffuseTex = pDiffuseTexData; + fragment.texWidth = diffuseTexWidth; + fragment.texHeight = diffuseTexHeight; + } + } + } + } +} + + +__host__ __device__ +void rasterizeLineHelper(const glm::vec3 &a, const glm::vec3 &b, + Fragment *dev_fragmentBuffer, int w, int h) +{ + const int left = glm::max(0, (int)glm::min(a.x, b.x)); + const int right = glm::min(w, (int)glm::max(a.x, b.x) + 1); + const int bottom = glm::max(0, (int)glm::min(a.y, b.y)); + const int top = glm::min(h, (int)glm::max(a.y, b.y) + 1); + + // outsides window + if (left >= right && bottom >= top) + { + return; + } + + int begin = right - left >= top - bottom ? left : bottom; + int end = right - left >= top - bottom ? right : top; + + for (int i = 0; i <= end - begin; ++i) + { + const glm::vec3 p = lerp(a, b, (i + 0.f) / (end - begin)); + const int index = (int)p.x + (int)p.y * w; + + dev_fragmentBuffer[index].color = glm::vec3(1.f); + } +} + +__global__ +void rasterizeLine(int totalNumPrimitives, Primitive *dev_primitives, + Fragment *dev_fragmentBuffer, int w, int h) +{ + int idx = blockDim.x * blockIdx.x + threadIdx.x; + + if (idx >= totalNumPrimitives) + { + return; + } + + const Primitive &primitive = dev_primitives[idx]; + const glm::vec3 &v0 = glm::vec3(primitive.v[0].pos); + const glm::vec3 &v1 = glm::vec3(primitive.v[1].pos); + const glm::vec3 &v2 = glm::vec3(primitive.v[2].pos); + + if (primitive.primitiveType == Line) + { + rasterizeLineHelper(v0, v1, dev_fragmentBuffer, w, h); + rasterizeLineHelper(v1, v2, dev_fragmentBuffer, w, h); + rasterizeLineHelper(v2, v0, dev_fragmentBuffer, w, h); + } +} + +__global__ +void rasterizePoint(int totalNumPrimitives, Primitive *dev_primitives, + Fragment *dev_fragmentBuffer, int w, int h) +{ + int idx = blockDim.x * blockIdx.x + threadIdx.x; + + if (idx >= totalNumPrimitives) + { + return; + } + + const Primitive &primitive = dev_primitives[idx]; + const glm::vec3 tri[3] = + { + glm::vec3(primitive.v[0].pos), + glm::vec3(primitive.v[1].pos), + glm::vec3(primitive.v[2].pos) + }; + if (primitive.primitiveType == Point) + { + for (int i = 0; i < 3; ++i) + { + const int x = (int)tri[i].x; + const int y = (int)tri[i].y; + const int index = x + y * w; + if (x < 0 || x >= w || y < 0 || y >= h) + { + continue; + } + dev_fragmentBuffer[index].color = glm::vec3(1.f); + } + } +} /** - * Perform rasterization. - */ +* Perform rasterization. +*/ 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, + int sideLength2d = 8; + dim3 blockSize2d(sideLength2d, sideLength2d); + dim3 blockCount2d((width - 1) / blockSize2d.x + 1, (height - 1) / blockSize2d.y + 1); - // Execute your rasterization pipeline here // (See README for rasterization pipeline outline.) // Vertex Process & primitive assembly + curPrimitiveBeginId = 0; + dim3 numThreadsPerBlock(128); + + auto it = mesh2PrimitivesMap.begin(); + auto itEnd = mesh2PrimitivesMap.end(); + + float time_vtfaa = 0; + float time_primitive = 0; + + for (; it != itEnd; ++it) { - curPrimitiveBeginId = 0; - dim3 numThreadsPerBlock(128); - - auto it = mesh2PrimitivesMap.begin(); - auto itEnd = mesh2PrimitivesMap.end(); - - for (; it != itEnd; ++it) { - auto p = (it->second).begin(); // each primitive - auto pEnd = (it->second).end(); - for (; p != pEnd; ++p) { - dim3 numBlocksForVertices((p->numVertices + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); - dim3 numBlocksForIndices((p->numIndices + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); - - _vertexTransformAndAssembly << < numBlocksForVertices, numThreadsPerBlock >> >(p->numVertices, *p, MVP, MV, MV_normal, width, height); - checkCUDAError("Vertex Processing"); - cudaDeviceSynchronize(); - _primitiveAssembly << < numBlocksForIndices, numThreadsPerBlock >> > - (p->numIndices, - curPrimitiveBeginId, - dev_primitives, + auto p = (it->second).begin(); // each primitive + auto pEnd = (it->second).end(); + for (; p != pEnd; ++p) + { + dim3 numBlocksForVertices((p->numVertices + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); + dim3 numBlocksForIndices((p->numIndices + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); + + _vertexTransformAndAssembly<<>>(p->numVertices, *p, MVP, MV, MV_normal, width, height); + checkCUDAError("Vertex Processing"); + cudaDeviceSynchronize(); + + _primitiveAssembly<<>> + (p->numIndices, + curPrimitiveBeginId, + dev_primitives, *p); - checkCUDAError("Primitive Assembly"); - - curPrimitiveBeginId += p->numPrimitives; - } + checkCUDAError("Primitive Assembly"); + curPrimitiveBeginId += p->numPrimitives; } - - checkCUDAError("Vertex Processing and Primitive Assembly"); } + checkCUDAError("Vertex Processing and Primitive Assembly"); + cudaMemset(dev_fragmentBuffer, 0, width * height * sizeof(Fragment)); - initDepth << > >(width, height, dev_depth); - + initDepth<<>>(width, height, dev_depth); + // TODO: rasterize + dim3 primitiveBlocks((totalNumPrimitives + numThreadsPerBlock.x - 1) / numThreadsPerBlock.x); + if (DISPLAY_TRIANGLE) + { + rasterizePrimitive<<>>( + totalNumPrimitives, dev_primitives, dev_fragmentBuffer, dev_depth, + width, height, dev_mutex); + } + if (DISPLAY_LINE) + { + rasterizeLine<<>>( + totalNumPrimitives, dev_primitives, dev_fragmentBuffer, + width, height); + } + if (DISPLAY_POINT) + { + rasterizePoint<<>>( + totalNumPrimitives, dev_primitives, dev_fragmentBuffer, + width, height); + } + checkCUDAError("rasterize primitive"); + + render<<>>(width, height, dev_fragmentBuffer, dev_framebuffer); - // Copy depthbuffer colors into framebuffer - render << > >(width, height, dev_fragmentBuffer, dev_framebuffer); checkCUDAError("fragment shader"); - // Copy framebuffer into OpenGL buffer for OpenGL previewing - sendImageToPBO<<>>(pbo, width, height, dev_framebuffer); - checkCUDAError("copy render result to pbo"); + // Copy framebuffer into OpenGL buffer for OpenGL previewing + sendImageToPBO<<>>(pbo, width, height, dev_framebuffer); + checkCUDAError("copy render result to pbo"); } /** - * Called once at the end of the program to free CUDA memory. - */ +* Called once at the end of the program to free CUDA memory. +*/ void rasterizeFree() { - // deconstruct primitives attribute/indices device buffer + // deconstruct primitives attribute/indices device buffer auto it(mesh2PrimitivesMap.begin()); auto itEnd(mesh2PrimitivesMap.end()); @@ -859,24 +1135,25 @@ void rasterizeFree() { cudaFree(p->dev_verticesOut); - + //TODO: release other attributes and materials } } //////////// - cudaFree(dev_primitives); - dev_primitives = NULL; + cudaFree(dev_primitives); + dev_primitives = NULL; cudaFree(dev_fragmentBuffer); dev_fragmentBuffer = NULL; - cudaFree(dev_framebuffer); - dev_framebuffer = NULL; + cudaFree(dev_framebuffer); + dev_framebuffer = NULL; cudaFree(dev_depth); dev_depth = NULL; - checkCUDAError("rasterize Free"); -} + cudaFree(dev_mutex); + checkCUDAError("rasterize Free"); +} \ No newline at end of file From 7c094a9efa7deb17232430f997ed53a0cd0009e3 Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 23:38:39 -0400 Subject: [PATCH 5/8] Switch triangles on --- src/rasterize.cu | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/src/rasterize.cu b/src/rasterize.cu index 0ccb9ed..51d4af4 100644 --- a/src/rasterize.cu +++ b/src/rasterize.cu @@ -18,8 +18,8 @@ #include #include -#define DISPLAY_TRIANGLE false -#define DISPLAY_LINE true +#define DISPLAY_TRIANGLE true +#define DISPLAY_LINE false #define DISPLAY_POINT false #define CULL_FACE true @@ -212,7 +212,7 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { const float factor = 1.0f / 255.0f; glm::vec3 colorNormalized = factor * texelFetched; - if (DISPLAY_TRIANGLE || DISPLAY_POINT || DISPLAY_LINE) + if (DISPLAY_TRIANGLE) { buffer = glm::max(0.f, glm::dot(L, N)) * colorNormalized; } @@ -221,8 +221,12 @@ void render(int w, int h, Fragment *fragmentBuffer, glm::vec3 *framebuffer) { glm::vec3 norm = frag.eyeNor; buffer = glm::normalize(norm); } + if (DISPLAY_POINT || DISPLAY_LINE) + { + buffer = frag.color; + } - buffer += glm::vec3(pow(glm::max(0.f, glm::dot(N, H)), 200.f)); + buffer += glm::vec3(pow(glm::max(0.f, glm::dot(N, H)), 128.0f)); //buffer = glm::normalize(buffer); } } @@ -969,10 +973,10 @@ void rasterizeLineHelper(const glm::vec3 &a, const glm::vec3 &b, for (int i = 0; i <= end - begin; ++i) { - const glm::vec3 p = lerp(a, b, (i + 0.f) / (end - begin)); + const glm::vec3 p = lerp(a, b, (i + 0.0f) / (end - begin)); const int index = (int)p.x + (int)p.y * w; - dev_fragmentBuffer[index].color = glm::vec3(1.f); + dev_fragmentBuffer[index].color = glm::vec3(1.0f, 1.0f, 1.0f); } } @@ -992,12 +996,9 @@ void rasterizeLine(int totalNumPrimitives, Primitive *dev_primitives, const glm::vec3 &v1 = glm::vec3(primitive.v[1].pos); const glm::vec3 &v2 = glm::vec3(primitive.v[2].pos); - if (primitive.primitiveType == Line) - { - rasterizeLineHelper(v0, v1, dev_fragmentBuffer, w, h); - rasterizeLineHelper(v1, v2, dev_fragmentBuffer, w, h); - rasterizeLineHelper(v2, v0, dev_fragmentBuffer, w, h); - } + rasterizeLineHelper(v0, v1, dev_fragmentBuffer, w, h); + rasterizeLineHelper(v1, v2, dev_fragmentBuffer, w, h); + rasterizeLineHelper(v2, v0, dev_fragmentBuffer, w, h); } __global__ @@ -1019,20 +1020,17 @@ void rasterizePoint(int totalNumPrimitives, Primitive *dev_primitives, glm::vec3(primitive.v[2].pos) }; - if (primitive.primitiveType == Point) + for (int i = 0; i < 3; ++i) { - for (int i = 0; i < 3; ++i) - { - const int x = (int)tri[i].x; - const int y = (int)tri[i].y; - const int index = x + y * w; + const int x = (int)tri[i].x; + const int y = (int)tri[i].y; + const int index = x + y * w; - if (x < 0 || x >= w || y < 0 || y >= h) - { - continue; - } - dev_fragmentBuffer[index].color = glm::vec3(1.f); + if (x < 0 || x >= w || y < 0 || y >= h) + { + continue; } + dev_fragmentBuffer[index].color = glm::vec3(1.0f, 1.0f, 1.0f); } } /** From 42a6689f800c1c706b77ae57c51fc8d3be267a05 Mon Sep 17 00:00:00 2001 From: AIPC Date: Tue, 16 Oct 2018 23:55:36 -0400 Subject: [PATCH 6/8] Coarse readme --- README.md | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 41b91f0..461bf3f 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,34 @@ 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) +* Name: Bowen Yang + * [LinkedIn](https://www.linkedin.com/in/%E5%8D%9A%E6%96%87-%E6%9D%A8-83bba6148) + * [GitHub](https://github.com/Grillnov) + * [Facebook](https://www.facebook.com/yang.bowen.7399) + * [Steam](https://steamcommunity.com/id/grillnov) +* Tested on: Windows 10 x64, i7-6800K @ 3.40GHz 32GB, GTX 1080 8GB (Personal computer at home) -### (TODO: Your README) +# Description -*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. +Implement a CUDA rasterizer. +# Part 1: The final produce + +![](img/Plain.png) +I love this little milk truck, especially with bilinear texture filtering. + +# Part 2: Rendering only normal + +![](img/Normal.png) +The normal vectors are parsed as colors and shown directly. + +# Part 3: Only lines + +![](img/Lineframe.png) + +# Part 4: Point cloud + +![](img/Pointcloud.png) ### Credits From c5cf1df8aa13d566e8f77936c2de19be8d35e6f0 Mon Sep 17 00:00:00 2001 From: Uchanka Date: Tue, 16 Oct 2018 23:55:53 -0400 Subject: [PATCH 7/8] Added pics --- img/Lineframe.png | Bin 0 -> 77780 bytes img/Normal.png | Bin 0 -> 37670 bytes img/Plain.png | Bin 0 -> 86720 bytes img/Pointcloud.png | Bin 0 -> 26956 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/Lineframe.png create mode 100644 img/Normal.png create mode 100644 img/Plain.png create mode 100644 img/Pointcloud.png diff --git a/img/Lineframe.png b/img/Lineframe.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2e310f8ab78ba1e26dccfdacc5e4987c7efb24 GIT binary patch literal 77780 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

k92SAPyp>jYnrBs(FK78#Rbi0}OzM{* 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 literal 0 HcmV?d00001 diff --git a/img/Normal.png b/img/Normal.png new file mode 100644 index 0000000000000000000000000000000000000000..16be119887377e711fb52836f373325dad241e3e GIT binary patch literal 37670 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 J`oQef{{e6|w}$`# literal 0 HcmV?d00001 diff --git a/img/Plain.png b/img/Plain.png new file mode 100644 index 0000000000000000000000000000000000000000..dc38c45f2dacd572e9bd705b463648e35ab4aa46 GIT binary patch literal 86720 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 z

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 literal 0 HcmV?d00001 diff --git a/img/Pointcloud.png b/img/Pointcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..5f205b65195631473e52e5c3abfd18accf2e833c GIT binary patch literal 26956 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 rr?hMJ_5icb`E|r)SF0 Date: Tue, 16 Oct 2018 23:57:00 -0400 Subject: [PATCH 8/8] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 461bf3f..320ef65 100644 --- a/README.md +++ b/README.md @@ -19,21 +19,27 @@ Implement a CUDA rasterizer. # Part 1: The final produce ![](img/Plain.png) + I love this little milk truck, especially with bilinear texture filtering. # Part 2: Rendering only normal ![](img/Normal.png) + The normal vectors are parsed as colors and shown directly. # Part 3: Only lines ![](img/Lineframe.png) +Line primitives are rasterized. + # Part 4: Point cloud ![](img/Pointcloud.png) +Points are rasterized as point clouds. + ### Credits * [tinygltfloader](https://github.com/syoyo/tinygltfloader) by [@soyoyo](https://github.com/syoyo)