Giter Site home page Giter Site logo

stephensmitchell-forks / learnopengl.fsharp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from agnael/learnopengl.fsharp

0.0 0.0 0.0 197.69 MB

Exercises based on the https://learnopengl.com/ tutorials, using F# and Silk.NET as the OpenGL wrapper.

License: MIT License

F# 84.81% GLSL 15.19%

learnopengl.fsharp's Introduction

LearnOpenGL.FSharp

Exercises based on the https://learnopengl.com/ tutorials, using F# and SILK.NET as the OpenGL wrapper. Each title title with a link is pointing to the original chapter from the learnopengl.com site on which the theory is explained and all of the math is being copied from.

This repo can be useful if you are following the excelent tutorials on your own and get stuck on some of them (pointer manipulation is a bitch), but please note that this code is not supposed to set any guideline about how you should structure your own projects. It´s just the result of me trying to learn OpenGL, F#, FRP and functional programming in general, so expect the code to be suboptimal at best.

Also note that the 'Galante' library i wrote here is just a set of helpers i needed along the way and will need a complete refactor once i have a better understanding about OpenGl, but that´s not likely to happen within this repo.

From exercise 47 and onward, DearImGui is used to display an informative overlay, but this seems to be working only in my PC for some reason. I don't know what's going on (might be driver related) but I'll try to get it to work properly.

Table of contents

Getting started

01_Window

02_Triangle

03_Quad

04_Quad_Texture

05_Quad_Texture_Colored

06_Quad_Texture_Double

07_Transformations

This one looks kind of weird because the images are not centered vertically, the intention is to be forced to realize that rotations in OpenGL are calculated taking the origin as the rotation center (and not the object's center) and if a rotation of an object is needed around itself, then said object must be translated to the origin, rotated and then translated back to it's initial position, which may be somewhat counterintuitive.

08_Coordinate_Systems_Perspective

09_Coordinate_Systems_Cube

10_Coordinate_Systems_Cube_With_Depth_Testing

11_Coordinate_Systems_Many_Cubes

12_Camera_Automove

13_Camera_Walk_Around_With_Inputs

W forward | A left | S back | D right | SHIFT_LEFT down | SPACEBAR up | MOUSE_MOVE for camera | MOUSE_WHEEL zoom in/out

Lighting

14_A_Lighting_Scene

15_Phong_Ambient_Lighting

16_Phong_Diffuse_Lighting

17_Phong_Specular_Lighting

Note how the reflection of the light moves on each face of the cube when the camera moves.

18_Setting_Materials

19_Light_Properties

20_Different_Light_Colors

21_Diffuse_Maps

22_Specular_Maps

23_Emission_Maps

24_Directional_Light

25_Point_Light

Note that although this light source looks similar as in the previous examples, this time it's not reaching the objects that are too far away from it, giving a more realisting feel to the source.

26_Spotlight

27_Multiple_Lights

Model loading

28_Model_Loading

Advanced OpenGL

29_Visualizing_The_Depth_Buffer

30_Stencil_Testing

31_Discarding_Fragments

32_Blending

33_Face_Culling

Only half of the faces are rendered. For demonstration purposes, the front faces were removed this time.

34_Rendering_To_A_Texture

35_PostProcessing_Kernel_Effects

36_Skybox

37_Reflection

38_Refraction

No visual representation.

39_Vertex_Shader_Variables

40_Fragment_Shader_Variables

41_Uniform_Buffer_Objects

42_Building_Houses

43_Exploding_Objects

44_Visualizing_Normal_Vectors

45_Instancing

Rendering 100.000 asteroids went from 4 FPS to 80+ FPS when started using the instanced model matrix array.

46_Antialiasing

Advanced lighting

47_Blinn_Phong

48_Gamma_Correction

49_Shadow_Mapping

Coming soon.

Coming soon.

Coming soon.

Coming soon.

Coming soon.

Coming soon.

Coming soon.

PBR

Coming soon.

Coming soon.

Coming soon.

In practice

Coming soon.

learnopengl.fsharp's People

Contributors

agnael avatar oleg94 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.