Mastering C++ Standard Library Features

快速掌握 Modern C++ 标准库特性,基于 Vittorio Romeo 发布的教程编撰。

C++ 后面跟着的数字越来越大,才发现漏学了亿个特性,赶紧捡起来重新看一遍。

Read More

Share

《全局光照技术》札记

渲染方法论方向

  • 寻找更快的数学方法来比较精确地计算渲染积分方程
  • 根据光学现象或者其他理论拆分渲染方程,使得光照效果最终由多种效果叠加

UE4 预处理阶段构建距离场

Share

球谐函数与全局光照

球谐函数学习笔记。

Read More

Share

URP Toon Lit 初见

Git Repository: timrockefeller/UnityURPToonLitShaderExample

Main Structure

  1. SurfaceColor pass
  2. Outline pass
  3. ShadowCaster pass
  4. DepthOnly pass

Features

核心特性

  • 面部法线修正⚠️

  • 光滑描边⚠️

  • FOV、LOD 描边变形修正⚠️

  • 面部头发投影 clip⚠️

  • stencil local hair shadow on face

  • 前发遮挡的眼部渲染

    使用 Stencil Test,参考 UTS

  • 各向异性头发渲染与“天使环”结合 UV 拉伸

  • 边缘光

  • PBR 镜面光照

  • 通过 HSV 控制阴影、描边颜色

  • 2D 嘴部渲染

  • 物理与风的模拟

  • 其他的特性材质如 AO、镜面、法线等

Spotlight Methods

Alpha Cliping

1
2
3
4
5
6
7
8
9
10
11
12
13
void DoClipTestToTargetAlphaValue(half alpha) 
{
// iOS上编译该shader出了点问题
/*
if(_UseAlphaClipping)
{
clip(alpha - _Cutoff);
}
*/

// 并非最佳方案,尽量使用GPU原生特性
clip(alpha - _Cutoff + (1.0001-_UseAlphaClipping));
}

Lighting Equaltion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// this function will be used by all direct lights (directional/point/spot)
half3 ShadeSingleLightDefaultMethod(SurfaceData surfaceData, LightingData lightingData, Light light)
{
half3 N = lightingData.normalWS;
half3 L = light.direction;
half3 V = lightingData.viewDirectionWS;
half3 H = normalize(L+V);

half NoL = dot(N,L);

half lightAttenuation = 1;

// light's shadow map. If you prefer hard shadow, you can smoothstep() light.shadowAttenuation to make it sharp.
lightAttenuation *= lerp(1,light.shadowAttenuation,_ReceiveShadowMappingAmount);

// light's distance & angle fade for point light & spot light (see GetAdditionalPerObjectLight() in Lighting.hlsl)
// Lighting.hlsl -> https://github.com/Unity-Technologies/Graphics/blob/master/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl
lightAttenuation *= min(2,light.distanceAttenuation); //max intensity = 2, prevent over bright if light too close, can expose this float to editor if you wish to

// N dot L
// simplest 1 line cel shade, you can always replace this line by your own better method !
lightAttenuation *= smoothstep(_CelShadeMidPoint-_CelShadeSoftness,_CelShadeMidPoint+_CelShadeSoftness, NoL);

// don't want direct lighting becomes too bright for toon lit characters? set this value to a lower value
lightAttenuation *= _DirectLightMultiplier;

return surfaceData.albedo * light.color * lightAttenuation;
}
Share

夏至潮湿燥热,适合电子烧烤

一场雷雨砸了过来,没来得及反应,窗台上的陶瓷就碎了一地。

Read More

Share

May Game Days

甚至不知道要写些什么,只是想到要写,就不由自主地新建文本文档了。

这两天买了怪物猎人GU和异度之刃1,试图燃烧自己的青春。可问题在于,沉迷单机是否会与世隔绝……这孤独感可不是一两只艾露猫或者梅莉雅可以帮我化解的。

Share

想去乐园,请问怎么走?

抽时间看完了乐园追放,14年的作品放在今天也不失风味。作为一个奇迹番,虚渊玄从良的同时钉宫终于有了おっぱい。

虽说是三渲二,穿插着的手绘部分仍能把这份剧场版撑起来。之于我,这部作品的唯一亮点可能就是アンジェラ了。这铜盐焗襦,试问有谁顶得住呢?

斎藤笔下的アンジェラ

Read More

Share

Maybe so 無限未来

标题出自花牌情缘剧场版ED,drop部分十分符合个人的アニポップ审美,成为了五月上旬的洗脑曲。

Read More

Share

IEG Intern Log & Talks

IEG游戏客户端暑期实习面经,记录得十分潦草,当然也有一些对未来的看法。

所谓人生不失意、焉能暴己知,也只是在向不知何来的安全感揶揄妥协。

Read More

Share

软件工程

软件工程课程笔记,旨在应对突然出现的讲师提问。

Read More

Share