Skip to content

Commit

Permalink
Updated portfolio
Browse files Browse the repository at this point in the history
  • Loading branch information
papadanku committed Dec 8, 2024
1 parent ffe8b72 commit 2330e6b
Show file tree
Hide file tree
Showing 7 changed files with 390 additions and 320 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ doc/_build/
/.idea/inspectionProfiles/Project_Default.xml
/.idea/vcs.xml
/.vscode
papadanku.github.io.code-workspace
267 changes: 168 additions & 99 deletions doc/index.rst
Original file line number Diff line number Diff line change
@@ -1,142 +1,211 @@

Homepage
========
.. toctree::
:glob:
:titlesonly:
:hidden:

* :ref:`genindex`
* :ref:`search`
source/*/index

Portfolio
=========

.. toctree::
:glob:
:titlesonly:
:hidden:
Programming
-----------

source/*/index
Programming Languages
:General: C#, Python
:Markup: Markdown, reStructuredText
:Shaders: High Level Shading Language \(HLSL\), OpenGL Shading Language \(GLSL\)
:Utility: PowerShell
:Learning: Rust

Social Media Management
-----------------------
Version Control
:Git: GitHub, GitLab
:Subversion: TortoiseSVN

YouTube Channel
- Maintain a YouTube page for promotional and personal videos.
- Used a note-based template system through `Logseq <https://logseq.com/>`_ to streamline filling out information for video content.
- Engaged with the audience, when needed, and reflected feedback.
Source Code Editors:
Notepad++, Visual Studio Code, PyCharm

Facebook & Instagram
Created video content for promoting Project Reality's development highlights.
Project Management
Redmine

Video-Editing (2015 - Present)
------------------------------
Documentation Generators
MkDocs, Sphinx

Used various tools to create content for social media channels.
Research and Development
Zotero, Logseq, draw.io

Editing and compositing video
- `Blender Video Sequence Editor (2015 -> 2020) <https://www.blender.org/features/video-editing/>`_
- `Davinci Resolve (2020 -> Preset) <https://www.blackmagicdesign.com/products/davinciresolve>`_
Other
PowerShell Terminal

Media conversion
`FFmpeg <https://ffmpeg.org/>`_
Experience
^^^^^^^^^^

Desktop recording
`OBS Studio <https://obsproject.com/>`_
Project Reality: Battlefield 2
""""""""""""""""""""""""""""""

Downloading media
`yt-dlp <https://github.com/yt-dlp/yt-dlp>`_
:Date: 2021 - Present

ReShade Shader Development (2020 - Present)
-------------------------------------------
I am developer for the Project Reality: Battlefield 2 \(PR: BF2\).

Created `CShade <https://github.com/papadanku/CShade>`_, a library of image and video processing shaders.
Teamwork
- Communicated with other developers on new features.
- Helped new contributors get started with development.
- Posted development blogs to update the player community on the game's progress.

CShade contains ported and in-house shaders, including:
Repository Tool Usage
- Redmine to track changes and updates
- TortoiseSVN as version control

Image Processing
^^^^^^^^^^^^^^^^
HLSL: Updates
- Rewrote shader codebase to Shader Model 3.0

Ported AMD FidelityFX shaders
- `FidelityFX Lens <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_lens/>`_
- `FidelityFX Contrast Adaptive Sharpening (CAS) <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_contrast-adaptive-sharpening/>`_
- `FidelityFX Robust Contrast Adaptive Sharpening (RCAS) <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_super-resolution-upscaler/#robust-contrast-adaptive-sharpening-rcas>`_
- Ported shader assembly to programmable shaders
- Ported multitexture blending passess to programmable shaders

Common anti-aliasing
- `Fast Approximate Anti-Aliasing (FXAA) <https://en.wikipedia.org/wiki/Fast_approximate_anti-aliasing>`_
- `Directionally Localized Anti-Aliasing (DLAA) <http://www.and.intercon.ru/releases/talks/dlaagdc2011/>`_
- Post-processing suppression
- Thermal pixelation
- Water reflection

Color conversions
- Chromaticity spaces
- Polar color spaces
- Grayscale
HLSL: Implementations
- 16x anisotropic filtering support
- Complete per-pixel lighting
- Distance-based fog
- Logarithmic depth buffering
- Offmap terrain procedural sampling
- Valve Software's `Half-Lambert Lighting <https://advances.realtimerendering.com/s2006/Mitchell-ShadingInValvesSourceEngine.pdf>`_

Convolutions
- Gaussian blur
- Edge detection
Python: Implementations
- Python-generated dynamic AI view distance setting
- Reformatted codebase to fit closer to PEP\-8 standards
- Extended bot loadout to spawn with standard **and** alternate kits
- Randomized bot loadout kits via Python

Local normalization
- Census transform
- Local contrast normalization
`RealityDocs <https://gitlab.com/realitymod/public/RealityDocs>`_
Porting the team's modding documentation into a static documentation site.

Video processing
^^^^^^^^^^^^^^^^
`RealityShaders <https://github.com/realitymod/RealityShaders>`_
Maintained an open-source repository for Project Reality's updated shaders.

- Adaptive autoexposure
- Datamoshing
- Motion blur approximation
- Vector lines
`RealityUDL <https://gitlab.com/realitymod/public/realityudl>`_
Updated Project Reality's language support for Notepad++.

Post Processing
^^^^^^^^^^^^^^^
Projects
^^^^^^^^

- Backbuffer blending
- Dual-Kawase bloom
- Lens effect
- Letterbox
- Sharpening
- Vignetting
ReShade Shaders
"""""""""""""""

Photography & Videography (2021 - Present)
------------------------------------------
:Date: 2020 - Present

Used camera equipment to capture images and record video.
Created `CShade <https://github.com/papadanku/CShade>`_, a library of image and video processing shaders. CShade contains ported and in-house shaders.

:Camera: Sony Alpha 6000
:Lens: Sony SELP 1650
:AMD FidelityFX Ports: - `FidelityFX Lens <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_lens/>`_
- `FidelityFX Contrast Adaptive Sharpening \(CAS\) <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_contrast-adaptive-sharpening/>`_
- `FidelityFX Robust Contrast Adaptive Sharpening \(RCAS\) <https://gpuopen.com/manuals/fidelityfx_sdk/fidelityfx_sdk-page_techniques_super-resolution-upscaler/#robust-contrast-adaptive-sharpening-rcas>`_
:Anti-Aliasing: - `Fast Approximate Anti-Aliasing \(FXAA\) <https://en.wikipedia.org/wiki/Fast_approximate_anti-aliasing>`_
- `Directionally Localized Anti-Aliasing \(DLAA\) <http://www.and.intercon.ru/releases/talks/dlaagdc2011/>`_
:Camera Effects: Autoexposure, Dual-Kawase Bloom, Lens Effect, Vignette
:Color Conversions: Chromaticity Space, Polar Coordinate Space, Grayscale
:Convolutions: Gaussian Blur, Edge Detection, Sharpening
:Local Normalization: Census Transform, Local Contrast Normalization
:Motion Estimation: Hierarchical Lucas-Kanade Optical Flow
:Post-Processing: Backbuffer Blending, Letterbox
:Video Effects: Datamoshing, Motion Blur, Vector Lines

Project Reality: Battlefield 2 (2021 - Present)
-----------------------------------------------
ReadShade
"""""""""

Shader Development
^^^^^^^^^^^^^^^^^^
:Date: 2024 - Present

Updated codebase to Shader Model 3.0
ASM and multiblending rewritten to programmable shaders.
- Launched a documentation site for ReShade-related support using MkDocs.
- Collaborated with `Depth3D <https://blueskydefender.github.io/Depth3D/>`_ to create a documentation site.

Updated existing effects
- Post-processing suppression
- Thermal pixelation
- Water reflection
PythonicEngine
""""""""""""""

Implemented various graphics features
- Distance-based fog
- Valve Software's `Half-Lambert Lighting <https://advances.realtimerendering.com/s2006/Mitchell-ShadingInValvesSourceEngine.pdf>`_
- Per-pixel lighting
- Logarithmic depth buffering
- Off-terrain procedural sampling
- 16x anisotropic filtering support
:Date: 2023

Other Development
^^^^^^^^^^^^^^^^^
I spent the a weekend in 2023 following `Coder Space's Python 3D Engine Series <https://youtube.com/playlist?list=PLi77irUVkDav8GLrZSVZiPPHvVa-RjJ-o>`_. Here are the things I learned about.

Python Implementations
- Randomized bot loadouts via Python
- Python-generated dynamic AI view distance setting
Day 1
- Adding geometry, basic lighting, and a camera to a scene
- Best practices: mipmapping, gamma-correction, code refactoring
- Fundamentals of the OpenGL pipeline, from the CPU to the GPU
- Using ``PyGame``, ``ModernGL``, and ``PyGLM`` to make an engine
- Differences between Vertex Buffer Objects \(VBOs\) and Vertex Array Objects \(VAOs\)

`RealityDocs <https://gitlab.com/realitymod/public/RealityDocs>`_
Transition the team's modding documentation into a static documentation site.
- A VBO is a boxs with items
- A VAO is the box's manual on how to interpret its items

`RealityShaders <https://github.com/realitymod/RealityShaders>`_
Maintained an open-source repository for Project Reality's updated shaders.
Day 2
- Code refactoring through polymorphism
- Creating a skybox
- Plane-based skyboxing

`RealityUDL <https://gitlab.com/realitymod/public/realityudl>`_
Updated Project Reality's language support for Notepad++.
Day 3
- Creating smooth shadowmapping

Day 4+
- Using Sphinx to generate documentation for this project

----

Content Creation, Social Media Management
-----------------------------------------

Used various hardware and software to create content for social media channels.

Hardware
:Camera: Sony Alpha 6000
:Lens: Sony SELP 1650

Software
`OBS Studio <https://obsproject.com/>`_
Desktop recording, media muxing

`yt-dlp <https://github.com/yt-dlp/yt-dlp>`_
Media downloading, media conversion

Video Production
- `Blender Video Sequence Editor \(2015 -> 2020\) <https://www.blender.org/features/video-editing/>`_
- `Davinci Resolve \(2020 -> Preset\) <https://www.blackmagicdesign.com/products/davinciresolve>`_

Media Conversion
- `FFmpeg <https://ffmpeg.org/>`_
- `fre:ac <https://www.freac.org/>`_

Project Reality: Battlefield 2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

:Date: 2023 - Present

:Discord: https://discord.com/servers/project-reality-190090455973756928
:Facebook: https://www.facebook.com/realitymod
:Instagram: https://www.instagram.com/projectrealitymod/
:YouTube: https://www.youtube.com/@ProjectRealityMod

- Engaged with the community regarding feedback on the game.
- Created short video content for promoting Project Reality's development.

Short 1
- https://www.facebook.com/realitymod/videos/2024-update-reveal-1-shorts/355546420818308/
- https://www.instagram.com/projectrealitymod/reel/C4nDvMzMEBM/
- https://www.youtube.com/shorts/CtcVkypMKLE

Short 2
- https://www.facebook.com/realitymod/videos/2024-update-reveal-2-shorts/1612029272964840/
- https://www.instagram.com/projectrealitymod/reel/C5YIZiNBViH/
- https://www.youtube.com/shorts/1mmFA_XHZg0

Personal Social Media
^^^^^^^^^^^^^^^^^^^^^

:Date: 2022 - Present
:YouTube: https://www.youtube.com/@papadanku
:Instagram: https://www.instagram.com/paulinyourwall/

- Maintained a YouTube page for promotional and personal videos.
- Used a note-based template system through `Logseq <https://logseq.com/>`_ to streamline filling out information for video content.
- Engaged with the audience and reflected feedback.
- Used YouTube Analytics to monitor audience data.
46 changes: 23 additions & 23 deletions doc/source/blog/chromaticity.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,26 +75,26 @@ Source Code

::

/*
This code is based on the algorithm described in the following paper:
Author(s): Joost van de Weijer, T. Gevers
Title: "Robust optical flow from photometric invariants"
Year: 2004
DOI: 10.1109/ICIP.2004.1421433
Link: https://www.researchgate.net/publication/4138051_Robust_optical_flow_from_photometric_invariants
*/

float2 GetSphericalRG(float3 Color)
{
const float HalfPi = 1.0 / acos(0.0);

// Precalculate (x*x + y*y)^0.5 and (x*x + y*y + z*z)^0.5
float L1 = length(Color.rg);
float L2 = length(Color.rgb);

float2 Angles = 0.0;
Angles[0] = (L1 == 0.0) ? 1.0 / sqrt(2.0) : Color.g / L1;
Angles[1] = (L2 == 0.0) ? 1.0 / sqrt(3.0) : L1 / L2;

return saturate(asin(abs(Angles)) * HalfPi);
}
/*
This code is based on the algorithm described in the following paper:
Author(s): Joost van de Weijer, T. Gevers
Title: "Robust optical flow from photometric invariants"
Year: 2004
DOI: 10.1109/ICIP.2004.1421433
Link: https://www.researchgate.net/publication/4138051_Robust_optical_flow_from_photometric_invariants
*/

float2 GetSphericalRG(float3 Color)
{
const float HalfPi = 1.0 / acos(0.0);

// Precalculate (x*x + y*y)^0.5 and (x*x + y*y + z*z)^0.5
float L1 = length(Color.rg);
float L2 = length(Color.rgb);

float2 Angles = 0.0;
Angles[0] = (L1 == 0.0) ? 1.0 / sqrt(2.0) : Color.g / L1;
Angles[1] = (L2 == 0.0) ? 1.0 / sqrt(3.0) : L1 / L2;

return saturate(asin(abs(Angles)) * HalfPi);
}
Loading

0 comments on commit 2330e6b

Please sign in to comment.