载入中...
搜索中...
未找到
Graphics.cpp
浏览该文件的文档.
187 table.addClass<Canvas>("Canvas", std::function<Canvas*()>([]() -> Canvas* { return nullptr; }), true);
193 table.addClass<Texture>("Texture", std::function<Texture*()>([]() -> Texture* { return nullptr; }), true);
203 auto meshCls = table.addClass<Mesh>("Mesh", std::function<Mesh*()>([]() -> Mesh* { return nullptr; }), true);
218 auto quad = table.addClass<Quad>("Quad", std::function<Quad*()>([]() -> Quad* { return nullptr; }), true);
225 auto shader = table.addClass<Shader>("Shader", std::function<Shader*()>([]() -> Shader* { return nullptr; }), true);
322 "Renderable3D", std::function<Renderable3D*()>([]() { return Renderable3D::create(); }), false);
367 table.addClass<Material>("Material", std::function<Material*()>([]() -> Material* { return nullptr; }), true);
400 table.addClass<GBuffer>("GBuffer", std::function<GBuffer*()>([]() -> GBuffer* { return nullptr; }), true);
412 "RenderControl", std::function<RenderControl*()>([]() -> RenderControl* { return nullptr; }), true);
422 rctrl.addFunc("getGBuffer", static_cast<GBuffer* (RenderControl::*)()>(&RenderControl::getGBuffer));
471 grassField.addFunc("bakePlane", static_cast<void (GrassField::*)(float, float, int, int)>(&GrassField::bakePlane));
514 auto water = table.addClass<Water>("Water", std::function<Water*()>([]() -> Water* { return nullptr; }), true);
551 "AmbientOcclusion", std::function<AmbientOcclusion*()>([]() -> AmbientOcclusion* { return nullptr; }), true);
590 table.addClass<Outline>("Outline", std::function<Outline*()>([]() -> Outline* { return nullptr; }), true);
614 "GlobalIllumination", std::function<GlobalIllumination*()>([]() -> GlobalIllumination* { return nullptr; }),
636 std::function<ScreenSpaceReflection*()>([]() -> ScreenSpaceReflection* { return nullptr; }), true);
654 "AntiAliasing", std::function<AntiAliasing*()>([]() -> AntiAliasing* { return nullptr; }), true);
685 static_cast<Texture* (Graphics::*)(image::ImageData*, bool, bool)>(&Graphics::newTextureFromImageData));
701 cls.addFunc("newShader", static_cast<Shader* (Graphics::*)(const std::string&)>(&Graphics::newShader));
702 cls.addFunc("newMeshShader", static_cast<Shader* (Graphics::*)(const std::string&)>(&Graphics::newMeshShader));
757ScreenSpaceReflection* Graphics::newScreenSpaceReflection() { return new ScreenSpaceReflection(this); }
824 return newMeshFromArrays(pos.data(), nrm.data(), uv.data(), int(pos.size() / 3), indices.data(),
867void Graphics::setBackgroundColorRGBA(float r, float g, float b, float a) { setBackgroundColor(Color(r, g, b, a)); }
880 if (data->getFormat() != "RGBA8") throw eve::Exception("newTextureFromImageData: only RGBA8 supported");
884 return newTexture(data->getWidth(), data->getHeight(), static_cast<const uint8_t*>(data->getData()), info);
887Texture* Graphics::newTextureFromImageData(image::ImageData* data, const TextureCreateInfo& info) {
889 if (data->getFormat() != "RGBA8") throw eve::Exception("newTextureFromImageData: only RGBA8 supported");
890 return newTexture(data->getWidth(), data->getHeight(), static_cast<const uint8_t*>(data->getData()), info);
893Texture* Graphics::newTextureFromFileRepeated(const std::string& filename, bool repeatU, bool repeatV) {
897 if (!fileData) throw eve::Exception("newTextureFromFileRepeated: failed to read '%s'", filename.c_str());
903Texture* Graphics::newTextureWithSampler(image::ImageData* data, bool repeatU, bool repeatV, bool generateMipmaps,
911 if (generateMipmaps && info.sampler.mipmap == MipmapMode::Disabled) info.sampler.mipmap = MipmapMode::Linear;
919void Graphics::setTextureSamplerParams(Texture* texture, const std::string& filter, const std::string& mipmap,
934Font* Graphics::newFont(font::FontData* data, std::string charset) { return new Font(this, data, std::move(charset)); }
Definition Exception.h:14
virtual std::string getName() const =0
CPU-side decoded font face (FreeType FT_Face + owned font bytes). Does not upload to GPU — rasterize ...
Definition FontData.h:23
void applyFromDepthTo(Graphics *gfx, Texture *linearDepth, Canvas *dest)
Definition AmbientOcclusion.cpp:450
void applyFromDepth(Graphics *gfx, Texture *hwDepth)
One-pass SSAO overlay for the 3D swapchain path. Samples hardware D32 (Vulkan NDC z in ....
Definition AmbientOcclusion.cpp:428
int resolutionFor(int fullSize) const
Downscale helper: returns floor(dim / downscale), at least 1. Callers create AO canvases at this size...
Definition AmbientOcclusion.cpp:344
Shader * getSsaoShader() const
Definition AmbientOcclusion.h:115
void setIntensity(float intensity)
Definition AmbientOcclusion.cpp:272
void setFloat(const std::string &name, float value)
Definition AmbientOcclusion.cpp:302
std::string getQuality() const
Definition AmbientOcclusion.h:37
void computeTo(Graphics *gfx, Texture *linearDepth, Canvas *dest)
Definition AmbientOcclusion.cpp:383
Shader * getBlurShader() const
Definition AmbientOcclusion.h:118
void setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, float farZ)
Camera for depth reconstruction (RH + ZO). Builds inv(viewProj) and near/far used by compute*.
Definition AmbientOcclusion.cpp:238
void blurTo(Graphics *gfx, Texture *aoMap, Canvas *dest)
Definition AmbientOcclusion.cpp:399
Shader * getGtaoShader() const
Definition AmbientOcclusion.h:117
bool hasParam(const std::string &name) const
Definition AmbientOcclusion.cpp:294
void setPower(float power)
Definition AmbientOcclusion.cpp:278
void applyFromGBuffer(Graphics *gfx, Texture *hwDepth, Texture *worldNormal)
Definition AmbientOcclusion.cpp:432
void setThickness(float thickness)
Definition AmbientOcclusion.cpp:283
Shader * getShader() const
Definition AmbientOcclusion.cpp:176
float getFloat(const std::string &name) const
Definition AmbientOcclusion.cpp:311
float getRadius() const
Definition AmbientOcclusion.cpp:289
Shader * getFromDepthShader() const
Definition AmbientOcclusion.h:120
float getDownscale() const
Definition AmbientOcclusion.h:70
void setQuality(const std::string &quality)
"low" | "medium" | "high" (unknown → medium).
Definition AmbientOcclusion.cpp:215
float getIntensity() const
Definition AmbientOcclusion.cpp:291
Shader * getHbaoShader() const
Definition AmbientOcclusion.h:116
int getSampleCount() const
Definition AmbientOcclusion.cpp:335
Shader * getOverlayShader() const
Definition AmbientOcclusion.h:119
void compute(Graphics *gfx, Texture *linearDepth)
Compute AO into the currently bound canvas / screen. Output RGB = AO (1=open), A = depth01.
Definition AmbientOcclusion.cpp:376
void blur(Graphics *gfx, Texture *aoMap)
Bilateral blur of an AO map (RGB=AO, A=depth).
Definition AmbientOcclusion.cpp:392
void applyOverlayTo(Graphics *gfx, Texture *aoMap, Canvas *dest)
Definition AmbientOcclusion.cpp:419
void applyOverlay(Graphics *gfx, Texture *aoMap)
Darken the current target with AO: black + alpha=(1-ao)*intensity. Draw over an already-rendered scen...
Definition AmbientOcclusion.cpp:408
void setRadius(float radius)
Definition AmbientOcclusion.cpp:262
bool hasParam(const std::string &name) const
Definition AntiAliasing.cpp:192
void apply(Graphics *gfx, Texture *source)
Apply current mode to source, writing into the currently bound canvas / screen. Uploads texelW/texelH...
Definition AntiAliasing.cpp:255
Shader * getSmaaShader() const
Definition AntiAliasing.h:68
Shader * getNfaaShader() const
Definition AntiAliasing.h:70
void setMode(const std::string &mode)
"fxaa" | "smaa" | "ssaa" | "nfaa" (unknown → fxaa).
Definition AntiAliasing.cpp:176
Shader * getSsaaShader() const
Definition AntiAliasing.h:69
void prepareSource(Texture *source)
Upload texel uniforms from source without drawing (3D scene-color resolve).
Definition AntiAliasing.cpp:253
float suggestScale() const
Suggested supersample scale for the active quality when using "ssaa" (2 for low/medium,...
Definition AntiAliasing.cpp:212
void applyTo(Graphics *gfx, Texture *source, Canvas *dest)
Definition AntiAliasing.cpp:259
float getFloat(const std::string &name) const
Definition AntiAliasing.cpp:203
Shader * getFxaaShader() const
Definition AntiAliasing.h:67
void setFloat(const std::string &name, float value)
Definition AntiAliasing.cpp:197
void applyCanvas(Graphics *gfx, Canvas *source)
Definition AntiAliasing.cpp:268
int resolutionFor(int destSize) const
Definition AntiAliasing.cpp:218
void applyCanvasTo(Graphics *gfx, Canvas *source, Canvas *dest)
Definition AntiAliasing.cpp:275
void setQuality(const std::string &quality)
"low" | "medium" | "high" (unknown → medium).
Definition AntiAliasing.cpp:168
float screenToWorldY(float screenX, float screenY, float viewW, float viewH)
Definition RenderSystem.cpp:42
float worldToScreenY(float worldX, float worldY, float viewW, float viewH)
Definition RenderSystem.cpp:54
float worldToScreenX(float worldX, float worldY, float viewW, float viewH)
Definition RenderSystem.cpp:48
float screenToWorldX(float screenX, float screenY, float viewW, float viewH)
Convert screen pixel (origin top-left of viewport) to world coordinates. viewW/viewH are the current ...
Definition RenderSystem.cpp:36
void setAmbient(float r, float g, float b)
Definition RenderSystem.cpp:17
void setPosition(float x, float y)
World-space look-at center and zoom (1 = identity).
Definition RenderSystem.cpp:24
Definition RenderSystem3D.h:18
float getScreenRayOriginY()
Definition RenderSystem3D.cpp:219
float getScreenRayOriginZ()
Definition RenderSystem3D.cpp:220
void setUp(float x, float y, float z)
Definition RenderSystem3D.cpp:150
void screenToRay(float screenX, float screenY, float viewW, float viewH)
Build a world-space picking ray from a screen pixel. Stores origin (camera eye) and normalized direct...
Definition RenderSystem3D.cpp:174
void setEnvIntensity(float intensity)
Definition RenderSystem3D.cpp:170
void setTarget(float x, float y, float z)
Definition RenderSystem3D.cpp:143
void setAmbient(float r, float g, float b)
Definition RenderSystem3D.cpp:161
void setEye(float x, float y, float z)
Definition RenderSystem3D.cpp:136
void setEnvMap(Texture *cube)
Specular IBL cubemap (Graphics::newCubemap). nullptr disables IBL.
Definition RenderSystem3D.cpp:168
float getScreenRayOriginX()
Definition RenderSystem3D.cpp:218
Definition Canvas.h:16
virtual int getWidth() const =0
virtual image::ImageData * newImageData()=0
virtual void clear(std::optional< Color > color, std::optional< int > stencil, std::optional< double > depth)=0
virtual Texture * getTexture()=0
Sampleable color buffer; screen Canvas returns nullptr.
virtual int getHeight() const =0
virtual void drawOcclusion(Graphics *gfx, const glm::mat4 &matrix) const
Draw as an opaque black silhouette for volumetric occlusion maps (screen-space god rays / light shaft...
Definition Drawable.h:35
virtual void draw(Graphics *gfx, const glm::mat4 &matrix) const =0
Draws the object with the specified transformation matrix.
bool getCastOcclusion() const
When false, skipped by Graphics::drawOcclusion / volumetric occluder passes.
Definition Drawable.h:27
GPU-side font: wraps a decoded font::FontData and rasterizes a fixed set of codepoints into a single ...
Definition Font.h:32
float getBaseline() const
Distance from the top of a line to the baseline (== getAscent()).
Definition Font.cpp:174
const Glyph * findGlyph(int codepoint) const
Returns nullptr if codepoint isn't in this Font's atlas.
Definition Font.cpp:180
Texture * getBuffer(const std::string &name) const
Definition GBuffer.cpp:17
bool hasBuffer(const std::string &name) const
"depth" | "hwDepth" | "normal" | "albedo"
Definition GBuffer.cpp:9
Screen-space single-bounce GI (SSGI).
Definition GlobalIllumination.h:27
void applyFromDepth(Graphics *gfx, Texture *packedAlbedo)
Overlay bounced light onto the currently bound canvas / screen. Packed path (tests): RGB=albedo/lit,...
Definition GlobalIllumination.cpp:197
void applyFromScene(Graphics *gfx, Texture *color, Texture *hwDepth)
Definition GlobalIllumination.cpp:204
float getIntensity() const
Definition GlobalIllumination.h:55
bool hasParam(const std::string &name) const
Definition GlobalIllumination.cpp:140
void setLightDirection(float dx, float dy, float dz)
Definition GlobalIllumination.cpp:123
void setQuality(const std::string &quality)
"low" | "medium" | "high" (unknown → medium).
Definition GlobalIllumination.cpp:84
std::string getQuality() const
Definition GlobalIllumination.h:37
void setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, float farZ)
Camera for depth reconstruction (RH + ZO). Builds inv(viewProj) and near/far used by applyFromDepth.
Definition GlobalIllumination.cpp:97
int getSampleCount() const
Definition GlobalIllumination.cpp:160
void setFloat(const std::string &name, float value)
Definition GlobalIllumination.cpp:144
void setRadius(float radius)
Definition GlobalIllumination.cpp:113
float getRadius() const
Definition GlobalIllumination.h:54
void setIntensity(float intensity)
Definition GlobalIllumination.cpp:118
Shader * getShader() const
Definition GlobalIllumination.h:72
void setLightColor(float r, float g, float b)
Definition GlobalIllumination.cpp:133
void applyFromDepthTo(Graphics *gfx, Texture *packedAlbedo, Canvas *dest)
Definition GlobalIllumination.cpp:212
float getFloat(const std::string &name) const
Definition GlobalIllumination.cpp:152
Definition Graphics.h:56
virtual void reset()
Resets the current color, background color, line style, and so forth.
Definition Graphics.cpp:740
virtual void setTextureSamplerParams(Texture *texture, const std::string &filter, const std::string &mipmap, float maxAnisotropy, float lodBias)
Update sampler state without re-uploading pixels (filter / mip / aniso / LOD bias).
Definition Graphics.cpp:919
virtual void draw(Drawable *drawable, const glm::mat4 &m)
Definition Graphics.cpp:848
Volumetric * newVolumetric()
Volumetric light + fog (screenspace / raymarch / fog). Caller owns Volumetric*; its Shaders are owned...
Definition Graphics.cpp:749
void drawCanvas(Canvas *canvas, float x, float y, float w, float h)
Definition Graphics.h:355
virtual void setDirectionalLight(float dx, float dy, float dz, float r=1.f, float g=1.f, float b=1.f)
Definition Graphics.cpp:167
std::unique_ptr< AntiAliasing > pipelineAA_
Definition Graphics.h:993
void setBackgroundColor(const Color &c)
Definition Graphics.h:585
virtual Mesh * newMeshCylinder(int slices=32, int stacks=1, bool caps=true)=0
Procedural Y-up cylinder (radius 1, height 2 centered at origin). slices = longitude divisions; stack...
std::unique_ptr< Outline > pipelineOutline_
Definition Graphics.h:994
Shader * newHairShader()
Built-in hair shader with default anisotropic parameters.
Definition Graphics.cpp:781
Texture * newTextureWithSampler(image::ImageData *data, bool repeatU, bool repeatV, bool generateMipmaps, float maxAnisotropy, const std::string &filter, const std::string &mipmap, float lodBias=0.f)
Script-friendly texture create: filter = "linear"|"nearest", mipmap = "none"|"linear"|"nearest"....
Definition Graphics.cpp:903
virtual void drawOcclusionTexture(Texture *texture, float x, float y, float w, float h)
Definition Graphics.cpp:860
virtual void setBackgroundColorRGBA(float r, float g, float b, float a=1.f)
Definition Graphics.cpp:867
GrassField * newGrassField()
Dense + sparse stylized grass field. Caller owns GrassField*; its Mesh / Shader / Texture are owned b...
Definition Graphics.cpp:785
AmbientOcclusion * newAmbientOcclusion()
Screen-space ambient occlusion (ssao / hbao / gtao). Caller owns AmbientOcclusion*; its Shaders are o...
Definition Graphics.cpp:751
Quad * newQuad(int x, int y, int w, int h)
Pixel-space atlas rect. Caller owns Quad* (not tracked by Graphics).
Definition Graphics.cpp:931
virtual Shader * newMeshShader(const std::string &vertGlsl, const std::string &fragGlsl)=0
virtual void setMsaaSamples(int samples)
Hardware MSAA sample count for the 3D scene color pass (0 disables, then 2/4/8 are used when the devi...
Definition Graphics.h:612
bool recordingEngine3D_
True while RenderSystem3D is submitting (AO / engine overlays).
Definition Graphics.h:980
Waterfall * newWaterfall()
Flowing waterfall (falling water sheet) with sky reflection, downward velocity streaks and animated f...
Definition Graphics.cpp:787
GlobalIllumination * pipelineGlobalIllumination()
Definition Graphics.cpp:764
Shader * newGrassShader()
t3ssel8r-style grass billboard shader (alpha test + shadow two-tone). Owned by Graphics....
Definition Graphics.cpp:783
bool saveFramePng(const std::string &path)
Save the last presented frame to a PNG at path. Enables screen readback if needed....
Definition Graphics.cpp:828
Outline * newOutline()
Screen-space model outline (t3ssel8r-style) from GBuffer depth + normal. Caller owns Outline*; its Sh...
Definition Graphics.cpp:753
virtual void drawScene3DRGBA(float x, float y, float w, float h, float r=1.f, float g=1.f, float b=1.f, float a=1.f)
Composite this frame's 3D scene color into a rect (screen or active Canvas). virtual * Call after ren...
Definition Graphics.cpp:147
virtual void renderScene3DToCanvas(Canvas *canvas, Camera3D *camera)
Definition Graphics.cpp:127
virtual Canvas * getCanvas() const =0
Shader * prepareSceneColorResolveShader(Texture *scene)
FXAA resolve shader that writes opaque RGB (ignores scene-color depth alpha).
Definition Graphics.cpp:131
Mesh * newMeshCube(float size=1.f)
Procedural cube (edge length size, centered at origin, outward CCW for RH Y-up), with per-face normal...
Definition Graphics.cpp:790
virtual void popValidationScope()=0
virtual void drawTexturedRectRGBA(Texture *texture, float x, float y, float w, float h, float r, float g, float b, float a=1.f)
Definition Graphics.cpp:873
virtual void pushValidationScope()=0
Backend hooks so the platform-independent render3D() can wrap its work in a GPU validation error scop...
virtual Shader * newShader(const std::string &vertGlsl, const std::string &fragGlsl)=0
Compile GLSL source with glslc (must be on PATH). Empty vertGlsl → default textured vert....
virtual void drawCanvasRGBA(Canvas *canvas, float x, float y, float w, float h, float r=1.f, float g=1.f, float b=1.f, float a=1.f)
Draw a Canvas color buffer as a textured rect (same batch order as other 2D).
Definition Graphics.cpp:160
virtual Texture * newTexture(int width, int height, const uint8_t *rgba, bool repeatU=false, bool repeatV=false)=0
Outline * pipelineOutline()
Pipeline-owned Outline used by RenderSystem3D when the "outline" feature is on.
Definition Graphics.cpp:774
Font * newFont(font::FontData *data, std::string charset=Font::defaultCharset())
Build a GPU font (glyph atlas texture) from decoded font data. Rasterizes charset (UTF-8,...
Definition Graphics.cpp:934
Material * newMaterial()
Create a Material asset (shading model + textures + PBR knobs). Caller owns Material*; not tracked by...
Definition Graphics.cpp:171
AntiAliasing * newAntiAliasing()
Classic image-space AA (FXAA / SMAA / SSAA / NFAA). Caller owns AntiAliasing*; its Shaders are owned ...
Definition Graphics.cpp:779
Texture * newTextureFromImageData(image::ImageData *data, bool repeatU=false, bool repeatV=false)
Definition Graphics.cpp:878
virtual void print(const std::string &text, float x, float y, const Color &color=Color(1.f, 1.f, 1.f, 1.f), float scale=1.f)
Draws UTF-8 text with the current font (see setFont), baseline-aligned so that (x,...
Definition Graphics.cpp:936
virtual float getMaxAnisotropy() const =0
Device max supported anisotropy (1 if unsupported). Valid after initWithWindow.
std::unique_ptr< RenderControl > renderControl_
Definition Graphics.h:990
virtual Texture * newTextureFromFile(const std::string &filename)=0
virtual void drawTexturedRectUV(Texture *texture, float x, float y, float w, float h, float u0, float v0, float u1, float v1, const Color &color)=0
Draw a textured sub-rect (atlas / tile UVs). texture may be null → solid.
virtual void present()=0
virtual void drawOcclusionSolid(float x, float y, float w, float h)
Definition Graphics.cpp:856
AntiAliasing * pipelineAntiAliasing()
Definition Graphics.cpp:769
AmbientOcclusion * pipelineAmbientOcclusion()
Pipeline-owned AO / GI / AA used by RenderSystem3D when features "ao" / "gi" / "aa" are enabled....
Definition Graphics.cpp:759
virtual void render3D()
Run RenderSystem3D (begin3DFrame + draw visible Renderable3D).
Definition Graphics.cpp:117
virtual bool bakeMeshMorph(Mesh *mesh)=0
If mesh morph weights are dirty, bake blended positions and upload to the GPU VBO....
Texture * newTextureFromFileRepeated(const std::string &filename, bool repeatU, bool repeatV)
Definition Graphics.cpp:893
ScreenSpaceReflection * newScreenSpaceReflection()
Screen-space reflections (ray-marched over scene color + hw depth). Caller owns ScreenSpaceReflection...
Definition Graphics.cpp:757
std::unique_ptr< GlobalIllumination > pipelineGI_
Definition Graphics.h:992
std::unique_ptr< AmbientOcclusion > pipelineAO_
Definition Graphics.h:991
virtual void setTextureSampler(Texture *texture, const TextureSampler &sampler)=0
Recreate the sampler for an existing texture (keeps image / mip chain). No-op when texture is null or...
virtual void drawTexturedRect(Texture *texture, float x, float y, float w, float h, const Color &color)=0
void drawScene3D(float x, float y, float w, float h)
Script-friendly 4-arg form (simplesquirrel does not apply C++ defaults).
Definition Graphics.h:348
virtual Texture * getSceneColorTexture()
Sampleable 3D color target for the current frame (RGB = lit, A = linear depth). Valid after begin3DFr...
Definition Graphics.h:432
virtual void drawSolidRectRGBA(float x, float y, float w, float h, float r, float g, float b, float a=1.f)
Definition Graphics.cpp:869
virtual void drawOcclusion(Drawable *drawable, const glm::mat4 &m)
Volumetric occlusion helpers (shadow-pass analogue for light shafts). drawOcclusion skips drawables w...
Definition Graphics.cpp:852
RenderControl * getRenderControl()
Shared compilable 3D render control (features → pass list + GBuffer). Owned by Graphics; valid for th...
Definition Graphics.cpp:173
virtual Mesh * newMeshFromArrays(const float *posXYZ, const float *nrmXYZ, const float *uvST, int vertexCount, const uint32_t *indices, int indexCount)=0
Upload a triangle mesh from packed CPU arrays. Owned by Graphics. posXYZ required (vertexCount*3)....
virtual void clearScreen()
Script-friendly wrappers (r,g,b[,a] floats — no Color type in Squirrel).
Definition Graphics.cpp:865
virtual void drawSolidRect(float x, float y, float w, float h, const Color &color, BlendMode blend=BlendMode::Alpha)=0
Internal immediate-mode helper used by RenderSystem / Batcher.
Water * newWater()
Dynamic water surface (sky reflection + animated edge waves + middle drop ripples)....
Definition Graphics.cpp:788
virtual Canvas * newCanvas(int width, int height)=0
Create an offscreen render target (sampleable). Owned by Graphics.
virtual void setScreenReadbackEnabled(bool enabled)
When true, each present copies the swapchain to a CPU buffer for getPixel/newImageData....
Definition Graphics.h:591
virtual Mesh * newMeshSphere(int slices=32, int stacks=16)=0
Procedural UV sphere (radius 1, Y-up). Owned by Graphics. slices = longitude divisions,...
GlobalIllumination * newGlobalIllumination()
Screen-space single-bounce GI. Caller owns GlobalIllumination*; its Shaders are owned by Graphics.
Definition Graphics.cpp:755
virtual Shader * newShaderFromSpvFile(const std::string &vertPath, const std::string &fragPath)=0
Load SPIR-V from files via Filesystem (empty vertPath → default textured vert).
virtual void drawTexturedRectShader(Texture *texture, Shader *shader, float x, float y, float w, float h, const Color &color)=0
Draw with an explicit Shader (nullptr = default textured pipeline).
Dense grass + sparse dark tufts on a mesh. Caller owns GrassField*; GPU Mesh / Shader / Texture are o...
Definition Grass.h:124
void setFrameDuration(float seconds)
Definition Grass.cpp:752
void bakePlane(float sizeX, float sizeZ, int segX, int segZ)
Definition Grass.cpp:731
void setColor(float r, float g, float b, float intensity=1.f)
Definition Light.cpp:39
void setVolumetricIntensity(float intensity)
Definition Light.cpp:56
static Light2D * createLight(const std::string &type="point")
Definition Light.cpp:5
void setDirection(float dx, float dy, float dz)
Definition Light.cpp:92
float getVolumetricIntensity()
Definition Light.cpp:134
void setShadowStrength(float strength)
Definition Light.cpp:123
void setPosition(float x, float y, float z)
Definition Light.cpp:81
static Light3D * createLight(const std::string &type="point")
Definition Light.cpp:63
void setVolumetricIntensity(float intensity)
Definition Light.cpp:131
void setColor(float r, float g, float b, float intensity=1.f)
Definition Light.cpp:103
Packages shading method + surface parameters into one attachable asset.
Definition Material.h:26
float getFloat(const std::string &name) const
Definition Material.cpp:58
void setNormalTexture(Texture *texture)
Definition Material.h:43
void setAlbedoTexture(Texture *texture)
Definition Material.h:40
bool hasParam(const std::string &name) const
Optional named float knobs (style / custom shader params).
Definition Material.cpp:54
void setHeightTexture(Texture *texture)
Definition Material.h:46
void setReceiveShadow(bool receive)
Definition Material.h:81
void setShadingModel(const std::string &model)
"pbr" | "unlit" | "hair" | "custom" (unknown → pbr).
Definition Material.cpp:9
void setTexCellBomb(float cellScale, float strength, float rotAmount=1.f)
Definition Material.cpp:34
void setTint(float r, float g, float b, float a=1.f)
Definition Material.cpp:19
void setParallax(float scale, float minLayers=8.f, float maxLayers=32.f)
Definition Material.cpp:40
void setFloat(const std::string &name, float value)
Definition Material.cpp:56
void setShader(Shader *shader)
Optional Mesh3D / hair Shader. nullptr → built-in path for the shading model.
Definition Material.h:50
bool setMorphWeight(const std::string &name, float weight)
Definition Mesh.cpp:116
float getMorphWeight(const std::string &name) const
Definition Mesh.cpp:128
Screen-space model outline (t3ssel8r-style), computed from the GBuffer hardware depth + world-normal ...
Definition Outline.h:31
float getDepthSensitivity() const
Definition Outline.cpp:90
void setDepthThreshold(float threshold)
View-space depth discontinuity that starts a depth edge.
Definition Outline.cpp:78
void setFloat(const std::string &name, float value)
Definition Outline.cpp:119
void setNormalThreshold(float threshold)
Normal discontinuity (1 - dot(n, nN)) that starts a crease edge.
Definition Outline.cpp:92
void setSoftness(float softness)
Smoothstep band used to fade edges (0 = hard, 1 = soft).
Definition Outline.cpp:99
bool hasParam(const std::string &name) const
Definition Outline.cpp:115
void setDepthSensitivity(float sensitivity)
Extra per-unit-distance depth tolerance (keeps outlines distance-consistent).
Definition Outline.cpp:85
float getFloat(const std::string &name) const
Definition Outline.cpp:124
void setClip(float nearZ, float farZ)
Near/far used to linearize the hardware depth.
Definition Outline.cpp:106
bool apply(Graphics *gfx, Texture *hwDepth, Texture *worldNormal)
Draw the outline over the currently bound canvas / screen. hwDepth is the D32 GBuffer (Vulkan NDC z),...
Definition Outline.cpp:143
bool applyTo(Graphics *gfx, Texture *hwDepth, Texture *worldNormal, Canvas *dest)
Definition Outline.cpp:159
Pixel-space sub-rectangle of a Texture (atlas cell / sprite frame). UV conversion uses the texture's ...
Definition Quad.h:9
void compile()
Rebuild the executable pass list from current feature flags.
Definition RenderControl.cpp:75
void enable(const std::string &feature)
Definition RenderControl.cpp:66
void disable(const std::string &feature)
Definition RenderControl.cpp:68
bool isEnabled(const std::string &feature) const
Definition RenderControl.cpp:70
bool hasPass(const std::string &name) const
Definition RenderControl.cpp:95
std::string getPassName(int index) const
Pass names: "shadow" | "gbuffer" | "forward" | "hair"
Definition RenderControl.cpp:90
bool supports(const std::string &feature) const
Definition RenderControl.cpp:42
static void setDirectionalLight(float dx, float dy, float dz, float r, float g, float b)
Legacy single directional light used when no enabled Light3D exists.
Definition RenderSystem3D.cpp:398
static void renderToCanvas(Graphics &gfx, Canvas *target, Camera3D *camera)
Definition RenderSystem3D.cpp:920
static void render(Graphics &gfx)
Definition RenderSystem3D.cpp:544
void setNormalTexture(Texture *texture)
Definition RenderSystem3D.cpp:254
void setCamera(Camera3D *camera)
Definition RenderSystem3D.cpp:370
bool getCastOcclusion()
Definition RenderSystem3D.cpp:368
float getParallaxMaxLayers()
Definition RenderSystem3D.cpp:356
int getMeshLodLevelAtDistance(float distance)
Definition RenderSystem3D.cpp:394
void setCastOcclusion(bool cast)
Definition RenderSystem3D.cpp:366
std::string getPartName(int index)
Definition RenderSystem3D.cpp:295
float getParallaxMinLayers()
Definition RenderSystem3D.cpp:354
Material * getPartMaterial(int index)
Definition RenderSystem3D.cpp:307
void setRotation(float yaw, float pitch, float roll)
Definition RenderSystem3D.cpp:232
float getTexCellBombRotation()
Definition RenderSystem3D.cpp:340
void setHeightTexture(Texture *texture)
Height map for parallax (R channel; white = raised). nullptr disables sampling.
Definition RenderSystem3D.cpp:256
void setPart(int index, const std::string &name, Mesh *mesh, Material *material)
Bind a named mesh+material part (e.g. Assimp submesh / body region). index 0..kMaxParts-1....
Definition RenderSystem3D.cpp:272
void setTexCellBomb(float cellScale, float strength, float rotAmount=1.f)
Texture cell bombing — random per-cell UV offset/rotation blended across a 2×2 neighborhood to hide t...
Definition RenderSystem3D.cpp:329
float getTexCellBombScale()
Definition RenderSystem3D.cpp:336
void setTint(float r, float g, float b, float a=1.f)
Definition RenderSystem3D.cpp:317
void setMetallic(float metallic)
Definition RenderSystem3D.cpp:325
void setTexture(Texture *texture)
Definition RenderSystem3D.cpp:252
void setReceiveLight(bool receive)
Definition RenderSystem3D.cpp:360
void setShader(Shader *shader)
Definition RenderSystem3D.cpp:258
void setMaterial(Material *material)
Attach a Material that packages shading method + surface params.
Definition RenderSystem3D.cpp:260
void setParallax(float scale, float minLayers=8.f, float maxLayers=32.f)
Parallax occlusion mapping. scale 0 disables (default). Typical scale 0.02..0.08. Requires a height t...
Definition RenderSystem3D.cpp:342
void setPosition(float x, float y, float z)
Definition RenderSystem3D.cpp:225
float getTexCellBombStrength()
Definition RenderSystem3D.cpp:338
Mesh * getPartMesh(int index)
Definition RenderSystem3D.cpp:301
void setCastShadow(bool cast)
Definition RenderSystem3D.cpp:362
float getParallaxScale()
Definition RenderSystem3D.cpp:352
void setMeshLod(int index, Mesh *mesh, float switchDistance=0.f)
Configure geometric LOD. index 0 = highest detail. For index > 0, switchDistance is the camera distan...
Definition RenderSystem3D.cpp:372
void setRoughness(float roughness)
Definition RenderSystem3D.cpp:327
void setScale(float sx, float sy, float sz)
Definition RenderSystem3D.cpp:243
void setReceiveShadow(bool receive)
Definition RenderSystem3D.cpp:364
void setVisible(bool visible)
Definition RenderSystem3D.cpp:358
Screen-space reflections (SSR) as a fullscreen post pass.
Definition ScreenSpaceReflection.h:26
void applyFromSceneTo(Graphics *gfx, Texture *sceneColor, Texture *hwDepth, Texture *worldNormal, Canvas *dest)
Write the SSR result into the currently bound canvas / dest.
Definition ScreenSpaceReflection.cpp:120
void setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, float farZ)
Camera for depth reconstruction (RH + ZO). Builds inv(viewProj) + near/far.
Definition ScreenSpaceReflection.cpp:52
float getStrength() const
Definition ScreenSpaceReflection.h:49
void setMaxDistance(float meters)
Definition ScreenSpaceReflection.cpp:74
void setEnabled(bool enabled)
Enable/disable the pass. When disabled it emits transparent (0 hit).
Definition ScreenSpaceReflection.cpp:69
bool getEnabled() const
Definition ScreenSpaceReflection.h:42
void setThickness(float meters)
Definition ScreenSpaceReflection.cpp:77
void setMaxSteps(int steps)
Definition ScreenSpaceReflection.cpp:76
void setStepLength(float meters)
Definition ScreenSpaceReflection.cpp:75
void setStrength(float strength)
Definition ScreenSpaceReflection.cpp:78
float getFloat(const std::string &name) const
Definition ScreenSpaceReflection.cpp:95
void setFloat(const std::string &name, float value)
Definition ScreenSpaceReflection.cpp:84
Shader * getShader() const
Definition ScreenSpaceReflection.h:67
void applyFromScene(Graphics *gfx, Texture *sceneColor, Texture *hwDepth, Texture *worldNormal)
Write SSR into the currently bound canvas / screen.
Definition ScreenSpaceReflection.cpp:142
bool hasParam(const std::string &name) const
Definition ScreenSpaceReflection.cpp:80
bool hasUniform(const std::string &name) const
Definition Shader.cpp:46
void sendVec2(const std::string &name, float x, float y)
Definition Shader.cpp:84
void sendFloat(const std::string &name, float x)
Definition Shader.cpp:82
void sendVec3(const std::string &name, float x, float y, float z)
Definition Shader.cpp:89
int declareMatrix(const std::string &name)
Definition Shader.cpp:34
int getUniformIndex(const std::string &name) const
Definition Shader.cpp:48
int declareFloat(const std::string &name)
Reserve sequential float slots in the push-constant block. Returns start index.
Definition Shader.cpp:30
void sendVec4(const std::string &name, float x, float y, float z, float w)
Definition Shader.cpp:94
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:17
void scatter(Graphics *gfx, Texture *occlusion)
Scatter-only: occlusion → shafts with alpha (draw over a prior scene). Writes to the currently bound ...
Definition Volumetric.cpp:480
void scatterTo(Graphics *gfx, Texture *occlusion, Canvas *dest)
Same as scatter but into an explicit destination.
Definition Volumetric.cpp:485
float getFloat(const std::string &name) const
Definition Volumetric.cpp:365
void drawOccluder(Graphics *gfx, Drawable *drawable, const glm::mat4 &matrix)
Drawable occlusion (respects Drawable::getCastOcclusion).
Definition Volumetric.cpp:448
void setMode(const std::string &mode)
"screenspace" | "raymarch" | "fog" — selects which shader params quality tweaks.
Definition Volumetric.cpp:233
void setLightScreenPos(float x, float y, float width, float height)
Pixel-space helper (converts with width/height).
Definition Volumetric.cpp:253
void beginOcclusionMap(Graphics *gfx, float lightPixelX, float lightPixelY, float lightRadiusPixels=24.f)
Clear the current canvas to black and draw a bright light disc (start of an occlusion map)....
Definition Volumetric.cpp:436
void applyFromScene(Graphics *gfx, Texture *scene)
Single-pass: treat source as the scene (bright regions ≈ light), add shafts + dust/fog onto it....
Definition Volumetric.cpp:494
void drawOccluders2D(Graphics *gfx)
Draw all visible Renderable2D with castOcclusion into the current canvas as black silhouettes (shadow...
Definition Volumetric.cpp:464
void rayMarchTo(Graphics *gfx, Texture *linearDepth, Canvas *dest)
Definition Volumetric.cpp:513
void setFogHeightFalloff(float falloff)
Definition Volumetric.cpp:333
void setLightScreenUV(float u, float v)
Light position in UV (0..1), origin top-left to match 2D UVs.
Definition Volumetric.cpp:243
void rayMarch(Graphics *gfx, Texture *linearDepth)
Ray march participating media using a linear-depth texture (R channel, 0=near .. 1=far)....
Definition Volumetric.cpp:508
void setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, float farZ)
Camera for ray march reconstruction (RH + ZO). Builds inv(viewProj) and near/far used by rayMarch*.
Definition Volumetric.cpp:278
void setIntensity(float intensity)
Definition Volumetric.cpp:314
bool hasParam(const std::string &name) const
Definition Volumetric.cpp:353
float getLightScreenU() const
Definition Volumetric.cpp:250
void setLightDirection(float dx, float dy, float dz)
World-space direction toward the lit surface (ray march / phase).
Definition Volumetric.cpp:259
void setFloat(const std::string &name, float value)
Definition Volumetric.cpp:358
void setShaftColor(float r, float g, float b)
Definition Volumetric.cpp:296
void setQuality(const std::string &quality)
"low" | "medium" | "high" (unknown → medium).
Definition Volumetric.cpp:228
void setFogHeight(float worldY)
Height fog: denser near world Y = fogHeight; falloff is 1/meters scale.
Definition Volumetric.cpp:328
void applyFromSceneTo(Graphics *gfx, Texture *scene, Canvas *dest)
Definition Volumetric.cpp:499
float getLightScreenV() const
Definition Volumetric.cpp:251
void applyFogTo(Graphics *gfx, Texture *linearDepth, Canvas *dest)
Definition Volumetric.cpp:527
void drawOccluderTexture(Graphics *gfx, Texture *texture, float x, float y, float w, float h)
Definition Volumetric.cpp:458
void setFogStart(float startDistance)
View-distance ramp where fog appears (world units along the ray).
Definition Volumetric.cpp:338
void applyFog(Graphics *gfx, Texture *linearDepth)
Volumetric height/distance fog from a linear-depth texture. Writes fog RGB with alpha = 1-transmittan...
Definition Volumetric.cpp:522
Shader * getRayMarchShader() const
Definition Volumetric.h:153
void drawOccluderSolid(Graphics *gfx, float x, float y, float w, float h)
Convenience 2D black silhouette (solid or textured alpha).
Definition Volumetric.cpp:453
int resolutionFor(int fullSize) const
Downscale helper: returns floor(dim / downscale), at least 1. Callers create occlusion / scatter canv...
Definition Volumetric.cpp:392
void setFogColor(float r, float g, float b)
Definition Volumetric.cpp:305
Dynamic water surface with sky reflection and animated ripples.
Definition Water.h:33
void setScreenSpaceReflection(bool enabled, float strength=0.85f)
Optional screen-space reflection overlay. When enabled, the shader samples the SSR pass result (bound...
Definition Water.cpp:250
void setRippleAmplitude(float amp)
Amplitude of the occasional middle drop ripples.
Definition Water.cpp:233
void draw()
Draw the water plane (uses default mesh3d camera / lighting state).
Definition Water.cpp:279
float getReflectionIntensity() const
Definition Water.h:79
void createPlane(float sizeX, float sizeZ, int segX, int segZ)
Build a flat XZ plane (Y-up) sized sizeX × sizeZ with UVs in [0,1]².
Definition Water.cpp:186
void setReflectionTint(float r, float g, float b)
Definition Water.cpp:243
void setReflectionIntensity(float intensity)
Definition Water.cpp:248
float getScreenSpaceReflectionStrength() const
Definition Water.h:92
bool getScreenSpaceReflection() const
Definition Water.h:91
void setViewport(float width, float height)
Window / target size in pixels, used to compute screen-space UVs.
Definition Water.cpp:254
void setWaterColor(float r, float g, float b)
Definition Water.cpp:238
Flowing waterfall (falling water sheet) rendered on a vertical plane.
Definition Waterfall.h:34
void setSunIntensity(float intensity)
Definition Waterfall.cpp:114
void setReflectionIntensity(float intensity)
Definition Waterfall.cpp:113
void createSheet(float width, float height, int segX, int segY)
Build a vertical XY plane (facing +Z, Y-up world) sized w×h, UVs [0,1]².
Definition Waterfall.cpp:56
void setStreakCount(int count)
How many layered falling streaks are drawn.
Definition Waterfall.cpp:103
void draw()
Draw the waterfall sheet (uses default mesh3d camera / lighting state).
Definition Waterfall.cpp:131
void setWaterColor(float r, float g, float b)
Definition Waterfall.cpp:108
void setTurbulence(float t)
Amount of turbulence / white-water streak in the body.
Definition Waterfall.cpp:102
float getReflectionIntensity() const
Definition Waterfall.h:77
void setStreakScale(float scale)
Horizontal stretch of the falling streaks (1 = circular, >1 elongated).
Definition Waterfall.cpp:104
void setTopFoam(float v)
Relative height (0..1) of the top foam lip and bottom splash bands.
Definition Waterfall.cpp:105
void setFlowSpeed(float speed)
Fall speed of the water (scales the downward scroll).
Definition Waterfall.cpp:101
void rtDraw(const char *api, const char *detail=nullptr)
Definition RenderTrace.h:48
Shader * createShader(Graphics *gfx)
Create the default hair shader (alpha-blended, anisotropic specular). Owned by Graphics.
Definition HairShader.cpp:50
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition AnimTrail.h:6
void registerGraphicsCapabilities()
Definition GraphicsCapabilities.cpp:524
@ Disabled
uint32_t nextCodepointUtf8(const std::string &text, size_t &i)
Decodes one UTF-8 codepoint from text starting at byte offset i, advancing i past it....
Definition Font.cpp:17
glm::vec4 Color
RGBA color used by every graphics draw call. Lives inside eve::graphics so including a graphics heade...
Definition Color.h:13
Definition Font.h:58
Options for Graphics::newTexture / newCubemap. When generateMipmaps is true and sampler....
Definition TextureSampler.h:104
bool generateMipmaps
Definition TextureSampler.h:106
Sampler state for a Texture (filter, wrap, mip LOD, anisotropy). Defaults match historical engine beh...
Definition TextureSampler.h:27
float maxAnisotropy
1 = off; values >1 enable anisotropic filtering when the device supports it.
Definition TextureSampler.h:35
static FilterMode parseFilter(const std::string &name)
Definition TextureSampler.h:73
static MipmapMode parseMipmap(const std::string &name)
Definition TextureSampler.h:78