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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
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);
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-6
@@ -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
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user