Updated content and hid unfinished articles
This commit is contained in:
parent
e7f85974ff
commit
6336e76406
16 changed files with 47 additions and 29 deletions
|
|
@ -2,6 +2,7 @@
|
|||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
thumbnail: /img/fof.png
|
||||
draft: true
|
||||
tags: ["draft"]
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: "Hello World!"
|
||||
date: 2023-10-15 20:25:14.038 +0100
|
||||
---
|
||||
|
||||
# Hello World!
|
||||
Eyy *Finger Guns*
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: "Hello World!"
|
||||
date: 2023-10-15 20:25:14.038 +0100
|
||||
---
|
||||
|
||||
# Hello World!
|
||||
Eyy *Finger Guns*
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
title: "An Exploratory Analysis of Student Experiences With Peer Evaluation in Group Game Development Projects"
|
||||
date: 2023-11-07T15:23:05Z
|
||||
thumbnail: /thumbnails/ga.jpg
|
||||
tags: ["draft"]
|
||||
tags: ["academia", "teaching", "student experience"]
|
||||
---
|
||||
Collaborative projects are commonplace in computing education. They typically enable students to gain experience building software in teams, equipping them with the teamwork skills they need to be competitive in the labour market. However, students often need encouragement to reflect upon and synthesise their experience to attain the most learning. Peer evaluation offers one such approach, but the conditions which facilitate effective peer evaluation have not yet been established. This paper seeks to provide insight into student experiences with peer evaluation. It builds upon prior qualitative work, analysing quantitative data collected through a questionnaire taken by undergraduate students on a collaborate digital game development module. An exploratory factor analysis identifies seven dimensions of variance in the student experience: perceived impact; arbitrary influence; inconsistency; team cohesiveness; assessment pressure; ease and professionalism. Correlation analysis suggests some factors such as arbitrary influence, team cohesion, assessment pressure, and professionalism are associated with attained learning, whilst factors such as inconsistency and onerousness are not. This informs the development of a conceptual framework, suggesting focuses which facilitate effective peer evaluation. Expanding this conceptual framework and validating it across different demographics, contexts, and project types are suggested as avenues for further investigation.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
title: "Student Perspectives on the Purpose of Peer Evaluation During Group Game Development Projects"
|
||||
date: 2023-11-07T15:24:03Z
|
||||
thumbnail: /thumbnails/ga.jpg
|
||||
tags: ["draft"]
|
||||
tags: ["academia", "teaching", "student experience"]
|
||||
---
|
||||
Being able to work well in a team is valued in industry and beyond. As such, many university educators strive to help their students to collaborate effectively. However, it is typically the case that more than ad-hoc experience is needed to master teamwork. Often, students need to become reflective practitioners who learn from their experiences and enact change. Self and peer evaluation can help evoke such reflection. However, the facilitating conditions for effective learning from peer evaluation during group projects in computing are not yet well-defined. This research is an initial step in identifying these conditions. In this study, students engaged in a long-term multidisciplinary software engineering project in which they produced a digital game. They completed regular exercises in which they reflected upon and wrote about their contributions to the project as well as those of their peers. Thematic analysis of 200 responses to an open-ended question about the purpose of these exercises illustrated student perspectives: giving and receiving feedback; prompting personal reflection and improvement; supporting supervision; aiding marking; informing project planning and management; exploring and reshaping group dynamics; improving project outputs; providing a system to hold group members accountable; and giving a sense of safety to raise issues without repercussion. Giving consideration to these differing perceptions will help educators to address student concerns about group projects, notably standardisation, workload efficiency, and fairness, and will lay the foundations for a model of peer evaluation which improves teamwork.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ I am someone who is fascinated by graphics programming, the creation of game eng
|
|||
I'm writing what I did up a little while after the fact, but he major steps I took were:
|
||||
- Setting up CMake/SDL/Opengl Boilerplate.
|
||||
- Implementing Camera Movement
|
||||
- Giving objects their own classes and world space
|
||||
- Loading in models and textures
|
||||
- Implementing PBR (Physically Based Rendering)
|
||||
- Implementing Normal Maps.
|
||||
|
|
@ -22,6 +21,45 @@ Much of what I implemented here was made possible by [LearnOpenGL.com](https://l
|
|||
### Setting up SDL/Opengl Boilerplate.
|
||||
So back in the second year of my undergrad in computing for games I had worked with SDL and OpenGL to render some terrain in C++. The only problem being is that in my time since then I've come to hate my reliance on Visual Studio and undergrad levels of programming style at the time.
|
||||
|
||||
This pushed me to finally get some C++ build system knowledge and go through the initial stages of LearnOpneGL.com's tutorial using the libraries I prefered. At the time I wanted to keep to one library ecosystem and using SDL-image with SDL made more sense than using a separate header library stb_image with glfw3. Before long I had a simple textured square.
|
||||
This pushed me to finally get some C++ build system knowledge and go through the initial stages of [LearnOpenGL](https://learnopengl.com/)'s tutorial using the libraries I preferred. At the time I wanted to keep to one library ecosystem and using SDL-image with SDL made more sense than using a separate header library stb_image with glfw3. Before long I had a simple textured square.
|
||||
|
||||

|
||||
|
||||
|
||||
## Implementing Camera Movement
|
||||
Following on from rendering a textured square I implemented an MVP stack. While I was at it I created objects to contain data to be rendered that also stored transforms. In this project practically all object transformations are stored as Matrices. I understand that in the long term this isn't ideal but it's good enough for a simple renderer.
|
||||
|
||||
{{< video "/posts/graphics-nothing-to-pbr/camera-movement.webm" >}}
|
||||
|
||||
## Loading in models and textures
|
||||
With the ability to look around objects I moved on to using [Assimp](https://www.assimp.org/) to load in models using [LearnOpenGL](https://learnopengl.com/)'s tutorial. Loading in Textures with the [SDL2-image](https://www.libsdl.org/projects/old/SDL_image/) library.
|
||||
|
||||
I ran into some weird issues along the way when it came to getting the image textures to work correctly, but I figured it out. I believe the textures initially weren't loaded into memory, then it was being loaded in upside down, before like Goldilocks, I got it just right.
|
||||
|
||||

|
||||
|
||||
I did go as far as implementing some simple diffuse lighting before deciding to just flat out and jump to PBR. And that gave some pretty good results. In hind sight I should have switch to working on other aspects of the project like giving it some a purpose other than rendering models. As this may have helped it keep my interest in the longer term.
|
||||
|
||||

|
||||
|
||||
## Implementing PBR (Physically Based Rendering)
|
||||
I then went through the steps to implement PBR from [LearnOpenGL](https://learnopengl.com/)'s articles. I didn't get at far as using textures for IBL or diffuse irradience, really I just wanted to focus on getting the lighting in. And I did it by implementing metalness, roughness, and AO in order. Other combinations of PBR layers exist but this was the one I chose.
|
||||
|
||||

|
||||
|
||||
I was also interested in texture packing so although it wasn't strictly necessary I got it rendering after packing each layer into the RGB values of a single texture (RMA aka. Roughness, Metallness, AO). This combined with some blender fu, allowed me to load in a single texture instead of three for PBR:
|
||||
|
||||

|
||||
|
||||
This gave me this result:
|
||||
|
||||
{{< video "/posts/graphics-nothing-to-pbr/pbr.mp4" >}}
|
||||
|
||||
## Implementing Normal Maps.
|
||||
The last step I took was to add normal maps as I felt that PBR alone was pretty flat. But I felt that so far I was following [LearnOpenGL](https://learnopengl.com/)'s articles too closely and not necessarily gaining a strong enough understanding of what was going on in the technique.
|
||||
|
||||
To counter this, I decided to calculate the tangent space of the normals at run time inside the GPU using the Geometry shader step, rather than caching tangents in another buffer like in [LearnOpenGL](https://learnopengl.com/)'s implementation. Doing while and referring to resources like [3Blue1Brown's series on Linear Algebra](https://www.3blue1brown.com/topics/linear-algebra), Gave me a much needed deeper under standing of linear algebra and how transforms actually work.
|
||||
|
||||
This gave me the last update of this project:
|
||||
|
||||
{{< video "/projects/videos/pbr-norm.mp4" >}}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
title: "Playing With C and Sockets"
|
||||
date: 2023-11-07T15:19:57Z
|
||||
thumbnail: /thumbnails/c-socks.png
|
||||
tags: ["draft"]
|
||||
draft: true
|
||||
tags: ["draft", "c", "web-development", "Sockets"]
|
||||
---
|
||||
|
||||
|
|
|
|||
BIN
static/posts/graphics-nothing-to-pbr/camera-movement.webm
Normal file
BIN
static/posts/graphics-nothing-to-pbr/camera-movement.webm
Normal file
Binary file not shown.
BIN
static/posts/graphics-nothing-to-pbr/diffuse-lighting.png
Normal file
BIN
static/posts/graphics-nothing-to-pbr/diffuse-lighting.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 152 KiB |
BIN
static/posts/graphics-nothing-to-pbr/loading-models.png
Normal file
BIN
static/posts/graphics-nothing-to-pbr/loading-models.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 384 KiB |
BIN
static/posts/graphics-nothing-to-pbr/pbr.jpg
Normal file
BIN
static/posts/graphics-nothing-to-pbr/pbr.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 234 KiB |
BIN
static/posts/graphics-nothing-to-pbr/pbr.mp4
Normal file
BIN
static/posts/graphics-nothing-to-pbr/pbr.mp4
Normal file
Binary file not shown.
BIN
static/posts/graphics-nothing-to-pbr/rma.jpg
Normal file
BIN
static/posts/graphics-nothing-to-pbr/rma.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 MiB |
|
|
@ -84,6 +84,7 @@ a:hover {
|
|||
|
||||
#article-content img {
|
||||
max-width: 100%;
|
||||
max-height: 50vh;
|
||||
height: auto;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
|
|
|
|||
|
|
@ -44,15 +44,6 @@
|
|||
{{- end }}
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<h2>Articles</h2>
|
||||
{{- $pageLen := len (where .Site.RegularPages "Type" "articles") -}}
|
||||
{{- range $i, $element := (where .Site.RegularPages "Type" "articles") }}
|
||||
{{ .Render "summary" }}
|
||||
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
|
||||
{{- end }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{{ $link := .Get 0 }}
|
||||
<video width="100%" controls autoplay muted>
|
||||
<video width="100%" style="max-height:50vh" controls autoplay muted loop>
|
||||
<source src="{{$link}}">
|
||||
</video>
|
||||
|
|
|
|||
Loading…
Reference in a new issue