Giter Site home page Giter Site logo

dodoleon / games106 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from saschawillems/vulkan

323.0 5.0 230.0 226.42 MB

现代图形绘制流水线原理与实践,作业框架。

License: MIT License

JavaScript 1.53% C++ 44.92% Python 0.52% C 0.74% Objective-C 0.36% Java 9.43% Objective-C++ 0.85% CMake 6.10% GLSL 35.56%

games106's Introduction

games106

现代图形绘制流水线原理与实践,作业框架。

这个fork来自SaschaWillems/Vulkan: Examples and demos for the new Vulkan API (github.com) 在这个项目中有非常多的example可以学习。在学习一个API的时候,代码示例永远是最好的老师。本课程的作业需要在已有的代码示例中做修改。

Build

详情可以查看项目原来的 BUILD文档 ,可以在Windows/Linux/Andorid/macOS/iOS中构建

HomeWork

作业的课程代码在./homework目录下,shader在./data/homework/shaders下。上传作业也按照一样的文件结构。上传对应的文件即可。

作业提交

课程学生注册方法:登录 http://cn.ces-alpha.org/course/register/GAMES106/ 注册账号,填写个人信息,输入验证码ilovegraphics,即可进入课程主页,查看并提交作业

homework0

作业0,作为一个熟悉编译环境的课程作业。最后显示一个如下图一样的三角形。有兴趣可以尝试在Android或者iOS上运行

triangle

homework1

作业1,扩展GLTF loading。作业1提供了一个gltf显示的demo,只支持静态模型,以及颜色贴图。作业1需要在这个基础上进行升级。

作业提交

按照代码框架的目录(方便助教检查和运行代码),把修改的文件打包成zip,或者用git patch的方式提交作业代码。

作业要求

  1. 作业要求的gltf文件已经上传到了data/buster_drone/busterDrone.gltf
  2. 支持gltf的骨骼动画。
  3. 支持gltf的PBR的材质,包括法线贴图。
  4. 必须在homework1的基础上做修改,提交其他框架的代码算作不合格。
  5. 进阶作业:增加一个Tone Mapping的后处理pass。增加GLTF的滤镜功能。tonemap选择ACES实现如下。这个实现必须通过额外增加一个renderpass的方式实现。
// tonemap 所使用的函数
float3 Tonemap_ACES(const float3 c) {
    // Narkowicz 2015, "ACES Filmic Tone Mapping Curve"
    // const float a = 2.51;
    // const float b = 0.03;
    // const float c = 2.43;
    // const float d = 0.59;
    // const float e = 0.14;
    // return saturate((x*(a*x+b))/(x*(c*x+d)+e));

    //ACES RRT/ODT curve fit courtesy of Stephen Hill
	float3 a = c * (c + 0.0245786) - 0.000090537;
	float3 b = c * (0.983729 * c + 0.4329510) + 0.238081;
	return a / b;
}

直接运行会不成功缺少GLTF模型。以及字体文件。根据文档下载 https://vulkan.gpuinfo.org/downloads/vulkan_asset_pack_gltf.zip 并且解压到./data文件夹中

下面是相关的资料

homework2

扩展 homework/homework2 (来自examples/variablerateshading) 中的示例,使得shading rate 可以根据绘制结果本身得频率动态调整,从而在不影响整体绘制质量的前提下,减少着色率。 可以阅读并参考 “Visually Lossless Content and Motion Adaptive Shading in Games” 中的描述,完成

  1. Content Adaptive Variable Shading Rate
  2. Motion Adaptive Variable Shading Rate

reference论文在: data/Visually Lossless Content and Motion Adaptive Shading in Games.pdf

homework3

homework3 比较独立,作业的框架代码以及作业要求:GAMES106-HW5

homework4

扩展 homework/homework4 (来自example/texturecubemap) 中的示例。 作业要求:

  1. 修改函数void loadCubemap(std::string filename, VkFormat format, bool forceLinearTiling)。示例中的textures/cubemap_yokohama_rgba.ktx是一张RGBA8的ktx图,使用任意平台支持的压缩格式压缩,比如BC7,ASTC,或者ETC2等等之类的压缩格式。把这张RGBA格式的图片压缩成压缩纹理。

homework5

扩展 homework/homework5 (来自example/pbrtexture) 中的示例。

作业要求:

通过简化shader使帧率分别提升10%和20%,提交简化前后的shader代码对比和时间对比。

games106's People

Contributors

1ace avatar aleksy-sokolowski avatar arufus avatar baldurk avatar ben-clayton avatar billhollings avatar chrisforbes avatar christianf-arm avatar dcbaker avatar dodoleon avatar dtrajko avatar ekzuzy avatar elect86 avatar hevrard avatar iostrowsintel avatar jherico avatar jonnxie avatar krooze avatar kuhar avatar liuhongyi0101 avatar natevm avatar per-mathisen-arm avatar prideout avatar roboman2444 avatar saschawillems avatar shoufengyang avatar srsaunders avatar tomek-brcm avatar vzout avatar yanchith avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.