0%

API是渲染里面最稀碎最脏的一块,砖搬的越多,问题重复遇到的可能性也越大;有些东西以前遇到过,现在又遇到了;有些以前很熟悉,现在又忘记了。虽然不一定是高明的东西,记录一下,下次再忘记可以翻一翻。古人云,“纸上得来终觉浅,好记性不如烂笔头”,诚不欺我。

今天就来记录一下,各种Graphics API里面,使用的数据格式对于定点数的处理。

数据格式这里主要记录两方面的使用,其一就是顶点数据,其二是纹理。

阅读全文 »

网络链接,常常失效,很多大公司亦是如此。好些前两年很容易访问到的链接,忽然就失了踪迹。再者,有些资源,不收藏一下,难受。

Nvidia Legacy OpenGL SDK samples

  1. NVIDIA GameWorks Graphics Samples,by ahcox > The GameWorks Graphics Samples pack is a resource for cross-platform Vulkan, OpenGL 4 (GL4) and OpenGL ES 2 and 3 (ES2 and ES3) development, targeting Android and Windows (and soon, will again support Linux x86/x64 and Linux for Tegra). It is an expansion and continuation of the longstanding OpenGL Graphics and Compute Samples, adding full support for and samples of the Vulkan 3D API. mirror
阅读全文 »

OpenGL虽然简单,但是问题也是公认的多,不同驱动实现的表现可能差异很大,导致同样的OpenGL的代码,在一台机器上正常执行,在另外一台机器上表现异常。

我这就遇到一个,采样GL_DEPTH_COMPONENT类型的depth texture,全屏显示到窗口。同样是GL4.6 core profile的上下文,在RTX4080上没问题,但是在笔记本ThinkPad P50(显卡NVIDIA Quadro M1000M)上结果全白色(1.0),当然P50确实太老了,10年老机了,妥妥的电子垃圾了。

可是,奈何啊,“同样是生活一起的两口子,做人的差别咋这么大咧?”。

阅读全文 »

OpenGL 4.0和DirectX 11提供了原子操作(atomic operation),为GPU上并行创建链表数据结构提供了便利。基于此算法的per-pixel link lists可以应用到order independent transparency,实现像素的程序化混合,实现顺序无关的半透明效果,避免了程序员在api层面对于略显无力的排序的折磨。

Per-Pixel Link List

PPLL的实现需要三个数据结构:头结点指针Buffer、链表Node Buffer、结点计数器。 - 头结点指针Buffer:每个像素位置又一个链表,所以叫per-pixel link lists,头指针Buffer的大小是framebuffer的大小,存储的是头结点在Node Buffer中的位置,初始化为一个空符号,比如-1; - 链表Node Buffer:存储所有结点数据,可以是任意数据,next字段是必需的,指向链表下一个结点;不需要初始化,只需要分配足够大小。 - 结点计数器:用于分配下一个Node Buffer位置来存储数据,使用原子操作累加。初始化为0。

阅读全文 »

设置生成目标的输出目录

1
2
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>)

Note $<CONFIG>应该在VS下才起作用

阅读全文 »

I don’t know of any game engines where they attribute real-world units to lighting and material values, since those kinds of things tend to be driven more by the appearance than the physical correctness. The relative intensities of, say, a candle and a 100W light bulb are probably more important than the absolute values.Lighting: The Rendering Equation

背景

DirectX SDK自从Windows 8 SDK开始,是随着Windows SDK附带的,包含了各个历史版本的头文件、动态库和工具集,但是这些历史版本SDK的sample和辅助库D3DX9、D3DX10、D3DX11等就被丢弃了。

偶尔会遇到一些D3D的旧版本上古demo,可能就使用了一些旧版本的辅助函数,比如在看SSS效果的时候使用iryoku大佬的separable-sss,仅仅依赖Windows SDK附带的DX依赖是没法正确跑起来。

阅读全文 »
×