half assed bugfixing
This commit is contained in:
@@ -3,8 +3,10 @@
|
|||||||
#include "../gen/Generated.h"
|
#include "../gen/Generated.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Puzzle.h" // TODO: remove
|
#include "Puzzle.h" // TODO: remove
|
||||||
|
#include "bgfx/bgfx.h"
|
||||||
#include "rendering/Rendering.h"
|
#include "rendering/Rendering.h"
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <vcruntime_typeinfo.h>
|
||||||
|
|
||||||
#define ENTITY_HANDLE(X) \
|
#define ENTITY_HANDLE(X) \
|
||||||
struct X \
|
struct X \
|
||||||
@@ -27,6 +29,7 @@ namespace Game
|
|||||||
Gen::TextureHandle TextureHandle;
|
Gen::TextureHandle TextureHandle;
|
||||||
Gen::ModelHandle ModelH;
|
Gen::ModelHandle ModelH;
|
||||||
bool Visible = true;
|
bool Visible = true;
|
||||||
|
bool DebugBreakOnRender = false;
|
||||||
|
|
||||||
void Render(const Model* models, const Material* materials, const Texture* textures);
|
void Render(const Model* models, const Material* materials, const Texture* textures);
|
||||||
void LoadFromSaved(const Gen::SavedEntityRenderData& saved);
|
void LoadFromSaved(const Gen::SavedEntityRenderData& saved);
|
||||||
@@ -140,6 +143,7 @@ namespace Game
|
|||||||
void Render(const Model* models, const Material* materials, const Texture* textures)
|
void Render(const Model* models, const Material* materials, const Texture* textures)
|
||||||
{
|
{
|
||||||
if (!IsEnabled) return;
|
if (!IsEnabled) return;
|
||||||
|
bgfx::setMarker(typeid(T).name());
|
||||||
for (uint16_t i = 0; i < Count; ++i)
|
for (uint16_t i = 0; i < Count; ++i)
|
||||||
{
|
{
|
||||||
Get({i}).EData.Render(models, materials, textures);
|
Get({i}).EData.Render(models, materials, textures);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "Puzzle.h"
|
#include "Puzzle.h"
|
||||||
#include "UI.h"
|
#include "UI.h"
|
||||||
#include "bx/bx.h"
|
#include "bx/bx.h"
|
||||||
|
#include "bx/debug.h"
|
||||||
#include "rendering/Rendering.h"
|
#include "rendering/Rendering.h"
|
||||||
|
|
||||||
#include "SDL3/SDL_mouse.h"
|
#include "SDL3/SDL_mouse.h"
|
||||||
@@ -28,6 +29,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
void EntityRenderData::Render(const Model* models, const Material* materials, const Texture* textures)
|
void EntityRenderData::Render(const Model* models, const Material* materials, const Texture* textures)
|
||||||
{
|
{
|
||||||
|
if (DebugBreakOnRender) bx::debugBreak();
|
||||||
if (models == nullptr || materials == nullptr || textures == nullptr) return;
|
if (models == nullptr || materials == nullptr || textures == nullptr) return;
|
||||||
if (!Gen::IsValid(ModelH) || MaterialHandle >= EMaterial::EntryCount) return;
|
if (!Gen::IsValid(ModelH) || MaterialHandle >= EMaterial::EntryCount) return;
|
||||||
if (!Visible) return;
|
if (!Visible) return;
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ namespace Game
|
|||||||
quad.EData.TextureHandle = Puzzle::IsValid(card.RefCard)
|
quad.EData.TextureHandle = Puzzle::IsValid(card.RefCard)
|
||||||
? staticCards[card.RefCard.Idx].BoardTextureHandle
|
? staticCards[card.RefCard.Idx].BoardTextureHandle
|
||||||
: Gen::TextureHandle{0};
|
: Gen::TextureHandle{0};
|
||||||
quad.EData.TextureHandle = {4};
|
|
||||||
quad.EData.Transform.Scale = {UICardScale, UICardScale, UICardScale};
|
quad.EData.Transform.Scale = {UICardScale, UICardScale, UICardScale};
|
||||||
quad.EData.DotColor = {1.0f, 1.0f, 1.0f, 1.0f};
|
quad.EData.DotColor = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||||
quad.EData.BaseColor = {1.0f, 1.0f, 1.0f, 1.0f};
|
quad.EData.BaseColor = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/game/compiled-shaders/glsl/dither/frag.bin
LFS
Normal file
BIN
src/game/compiled-shaders/glsl/dither/frag.bin
LFS
Normal file
Binary file not shown.
BIN
src/game/compiled-shaders/glsl/dither/vert.bin
LFS
Normal file
BIN
src/game/compiled-shaders/glsl/dither/vert.bin
LFS
Normal file
Binary file not shown.
BIN
src/game/compiled-shaders/glsl/normal/frag.bin
LFS
Normal file
BIN
src/game/compiled-shaders/glsl/normal/frag.bin
LFS
Normal file
Binary file not shown.
BIN
src/game/compiled-shaders/glsl/normal/vert.bin
LFS
Normal file
BIN
src/game/compiled-shaders/glsl/normal/vert.bin
LFS
Normal file
Binary file not shown.
BIN
src/game/data/puzzles/0.pzl
LFS
BIN
src/game/data/puzzles/0.pzl
LFS
Binary file not shown.
@@ -325,7 +325,7 @@ namespace Game
|
|||||||
SharedData& shared = GetShared();
|
SharedData& shared = GetShared();
|
||||||
|
|
||||||
bgfx::Init init;
|
bgfx::Init init;
|
||||||
init.type = bgfx::RendererType::Direct3D12;
|
init.type = bgfx::RendererType::Direct3D11;
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
init.debug = true;
|
init.debug = true;
|
||||||
// init.debug = false;
|
// init.debug = false;
|
||||||
|
|||||||
@@ -42,19 +42,19 @@ float dither(float brightness, vec2 inputUv)
|
|||||||
float zRes = dotsTotal;
|
float zRes = dotsTotal;
|
||||||
float invZRes = 1 / zRes;
|
float invZRes = 1 / zRes;
|
||||||
|
|
||||||
float2 rampLookupUv = vec2((0.5 * invXRes + (1 - invXRes) * brightness), 0.5);
|
vec2 rampLookupUv = vec2((0.5 * invXRes + (1 - invXRes) * brightness), 0.5);
|
||||||
float brightnessCurve = texture2D(s_rampSampler, rampLookupUv).r;
|
float brightnessCurve = texture2D(s_rampSampler, rampLookupUv).r;
|
||||||
|
|
||||||
// Magic dot frequency calculation
|
// Magic dot frequency calculation
|
||||||
float2 dx = ddx(inputUv);
|
vec2 dx = dFdx(inputUv);
|
||||||
float2 dy = ddy(inputUv);
|
vec2 dy = dFdy(inputUv);
|
||||||
float2x2 mat = float2x2(dx, dy);
|
mat2 mat = mat2(dx, dy);
|
||||||
float4 vectorized = float4(dx, dy);
|
vec4 vectorized = vec4(dx, dy);
|
||||||
float qq = dot(vectorized, vectorized);
|
float qq = dot(vectorized, vectorized);
|
||||||
float rr = determinant(mat);
|
float rr = determinant(mat);
|
||||||
float discriminantSqr = max(0.0, qq*qq - 4.0*rr*rr);
|
float discriminantSqr = max(0.0, qq*qq - 4.0*rr*rr);
|
||||||
float discriminant = sqrt(discriminantSqr);
|
float discriminant = sqrt(discriminantSqr);
|
||||||
float2 freq = sqrt(float2(qq + discriminant, qq - discriminant) / 2.0);
|
vec2 freq = sqrt(vec2(qq + discriminant, qq - discriminant) / 2.0);
|
||||||
|
|
||||||
// Figuring out how many dots we want
|
// Figuring out how many dots we want
|
||||||
float scaleExp = exp2(globalScale);
|
float scaleExp = exp2(globalScale);
|
||||||
@@ -66,7 +66,7 @@ float dither(float brightness, vec2 inputUv)
|
|||||||
spacing *= brightnessSpacingMultiplier;
|
spacing *= brightnessSpacingMultiplier;
|
||||||
|
|
||||||
float spacingLog = log2(spacing);
|
float spacingLog = log2(spacing);
|
||||||
int patternScaleLevel = floor(spacingLog);
|
int patternScaleLevel = int(floor(spacingLog));
|
||||||
float patternFractional = spacingLog - patternScaleLevel;
|
float patternFractional = spacingLog - patternScaleLevel;
|
||||||
vec2 uv = inputUv / exp2(patternScaleLevel);
|
vec2 uv = inputUv / exp2(patternScaleLevel);
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ void main()
|
|||||||
float testRadius = 30.0;
|
float testRadius = 30.0;
|
||||||
float testSpeed = 1.0;
|
float testSpeed = 1.0;
|
||||||
vec3 testOffset = vec3(0.0, 0.0, 50.0);
|
vec3 testOffset = vec3(0.0, 0.0, 50.0);
|
||||||
float3 lightPos = vec3(sin(u_time.x * testSpeed) * testRadius, 5.0, cos(u_time.x * testSpeed) * testRadius);
|
vec3 lightPos = vec3(sin(u_time.x * testSpeed) * testRadius, 5.0, cos(u_time.x * testSpeed) * testRadius);
|
||||||
vec3 texColor = u_dotColor.x > 0.1 ? u_dotColor.xyz : texture2D(s_texColor, v_uv0).xyz;
|
vec3 texColor = u_dotColor.x > 0.1 ? u_dotColor.xyz : texture2D(s_texColor, v_uv0).xyz;
|
||||||
|
|
||||||
// lighting
|
// lighting
|
||||||
@@ -103,9 +103,9 @@ void main()
|
|||||||
float r = dither(brightness * texColor.r, v_uv0);
|
float r = dither(brightness * texColor.r, v_uv0);
|
||||||
float g = dither(brightness * texColor.g, v_uv0);
|
float g = dither(brightness * texColor.g, v_uv0);
|
||||||
float b = dither(brightness * texColor.b, v_uv0);
|
float b = dither(brightness * texColor.b, v_uv0);
|
||||||
// float3 finalColor = vec3(r, g, b);
|
// vec3 finalColor = vec3(r, g, b);
|
||||||
float3 ditheredColor = dither(brightness, v_uv0);
|
vec3 ditheredColor = dither(brightness, v_uv0);
|
||||||
float3 finalColor = mix(u_baseColor, texColor, ditheredColor);
|
vec3 finalColor = mix(u_baseColor, texColor, ditheredColor);
|
||||||
gl_FragColor = vec4(finalColor, 1.0);
|
gl_FragColor = vec4(finalColor, 1.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ void main()
|
|||||||
v_color0 = a_color0;
|
v_color0 = a_color0;
|
||||||
v_uv0 = a_texcoord0;
|
v_uv0 = a_texcoord0;
|
||||||
v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz;
|
v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz;
|
||||||
v_normal = normalize(mul(u_model[0], a_normal));
|
v_normal = normalize(mul(u_model[0], vec4(a_normal, 1.0)).xyz);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,19 +42,19 @@ float dither(float brightness, vec2 inputUv)
|
|||||||
float zRes = dotsTotal;
|
float zRes = dotsTotal;
|
||||||
float invZRes = 1 / zRes;
|
float invZRes = 1 / zRes;
|
||||||
|
|
||||||
float2 rampLookupUv = vec2((0.5 * invXRes + (1 - invXRes) * brightness), 0.5);
|
vec2 rampLookupUv = vec2((0.5 * invXRes + (1 - invXRes) * brightness), 0.5);
|
||||||
float brightnessCurve = texture2D(s_rampSampler, rampLookupUv).r;
|
float brightnessCurve = texture2D(s_rampSampler, rampLookupUv).r;
|
||||||
|
|
||||||
// Magic dot frequency calculation
|
// Magic dot frequency calculation
|
||||||
float2 dx = ddx(inputUv);
|
vec2 dx = dFdx(inputUv);
|
||||||
float2 dy = ddy(inputUv);
|
vec2 dy = dFdy(inputUv);
|
||||||
float2x2 mat = float2x2(dx, dy);
|
mat2 mat = mat2(dx, dy);
|
||||||
float4 vectorized = float4(dx, dy);
|
vec4 vectorized = vec4(dx, dy);
|
||||||
float qq = dot(vectorized, vectorized);
|
float qq = dot(vectorized, vectorized);
|
||||||
float rr = determinant(mat);
|
float rr = determinant(mat);
|
||||||
float discriminantSqr = max(0.0, qq*qq - 4.0*rr*rr);
|
float discriminantSqr = max(0.0, qq*qq - 4.0*rr*rr);
|
||||||
float discriminant = sqrt(discriminantSqr);
|
float discriminant = sqrt(discriminantSqr);
|
||||||
float2 freq = sqrt(float2(qq + discriminant, qq - discriminant) / 2.0);
|
vec2 freq = sqrt(vec2(qq + discriminant, qq - discriminant) / 2.0);
|
||||||
|
|
||||||
// Figuring out how many dots we want
|
// Figuring out how many dots we want
|
||||||
float scaleExp = exp2(globalScale);
|
float scaleExp = exp2(globalScale);
|
||||||
@@ -66,7 +66,7 @@ float dither(float brightness, vec2 inputUv)
|
|||||||
spacing *= brightnessSpacingMultiplier;
|
spacing *= brightnessSpacingMultiplier;
|
||||||
|
|
||||||
float spacingLog = log2(spacing);
|
float spacingLog = log2(spacing);
|
||||||
int patternScaleLevel = floor(spacingLog);
|
int patternScaleLevel = int(floor(spacingLog));
|
||||||
float patternFractional = spacingLog - patternScaleLevel;
|
float patternFractional = spacingLog - patternScaleLevel;
|
||||||
vec2 uv = inputUv / exp2(patternScaleLevel);
|
vec2 uv = inputUv / exp2(patternScaleLevel);
|
||||||
|
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ void main()
|
|||||||
v_color0 = a_color0;
|
v_color0 = a_color0;
|
||||||
v_uv0 = a_texcoord0;
|
v_uv0 = a_texcoord0;
|
||||||
v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz;
|
v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz;
|
||||||
v_normal = normalize(mul(u_model[0], a_normal));
|
v_normal = normalize(mul(u_model[0], vec4(a_normal, 0.0)).xyz);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,21 @@ $shadersDir = ".\game\shaders"
|
|||||||
$outputBaseDir = ".\game\compiled-shaders"
|
$outputBaseDir = ".\game\compiled-shaders"
|
||||||
$includeDir = ".\dependency\bgfx.cmake\bgfx\src"
|
$includeDir = ".\dependency\bgfx.cmake\bgfx\src"
|
||||||
|
|
||||||
|
function CompileForAPI {
|
||||||
|
param ([string]$API, [string]$ShaderProfile)
|
||||||
|
$outDir = "$outputBaseDir\$API\$DirectoryName"
|
||||||
|
New-Item -ItemType Directory -Path $outDir -Force -ErrorAction Stop | Out-Null
|
||||||
|
Write-Host "Frag: $API $ShaderProfile"
|
||||||
|
& $shadercPath -f "$DirectoryFull\vert.sc" -o "$outDir\vert.bin" -i $includeDir --type v --platform windows --profile $ShaderProfile
|
||||||
|
Write-Host "Vert: $API $ShaderProfile"
|
||||||
|
& $shadercPath -f "$DirectoryFull\frag.sc" -o "$outDir\frag.bin" -i $includeDir --type f --platform windows --profile $ShaderProfile
|
||||||
|
}
|
||||||
|
|
||||||
function Process-Directory {
|
function Process-Directory {
|
||||||
param ([string]$DirectoryFull, [string]$DirectoryName)
|
param ([string]$DirectoryFull, [string]$DirectoryName)
|
||||||
Write-Host "Dir: $DirectoryName"
|
Write-Host "Dir: $DirectoryName"
|
||||||
$outDir = "$outputBaseDir\dx11\$DirectoryName"
|
CompileForAPI -API "dx11" -ShaderProfile "s_5_0"
|
||||||
New-Item -ItemType Directory -Path $outDir -Force -ErrorAction Stop | Out-Null
|
CompileForAPI -API "glsl" -ShaderProfile "430"
|
||||||
Write-Host "Frag"
|
|
||||||
& $shadercPath -f "$DirectoryFull\vert.sc" -o "$outDir\vert.bin" -i $includeDir --type v --platform windows --profile s_5_0
|
|
||||||
Write-Host "Vert"
|
|
||||||
& $shadercPath -f "$DirectoryFull\frag.sc" -o "$outDir\frag.bin" -i $includeDir --type f --platform windows --profile s_5_0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$subdirectories = Get-ChildItem -Path $shadersDir -Directory -Recurse -ErrorAction Stop
|
$subdirectories = Get-ChildItem -Path $shadersDir -Directory -Recurse -ErrorAction Stop
|
||||||
|
|||||||
BIN
tools/minidef.exe
LFS
BIN
tools/minidef.exe
LFS
Binary file not shown.
BIN
tools/shaderc.exe
LFS
BIN
tools/shaderc.exe
LFS
Binary file not shown.
BIN
tools/texturec.exe
LFS
BIN
tools/texturec.exe
LFS
Binary file not shown.
Reference in New Issue
Block a user