Skip to content

chore: add nexusmod links#1137

Merged
alandtse merged 6 commits into
community-shaders:devfrom
alandtse:links
Jun 13, 2025
Merged

chore: add nexusmod links#1137
alandtse merged 6 commits into
community-shaders:devfrom
alandtse:links

Conversation

@alandtse
Copy link
Copy Markdown
Collaborator

@alandtse alandtse commented Jun 12, 2025

Summary by CodeRabbit

  • New Features
    • Added direct links to each feature's Nexus Mods page, making it easier for users to access more information about individual features. These links are now available for Cloud Shadows, Grass Collision, Grass Lighting, Light Limit Fix, Screen Space GI, Screen Space Shadows, Skylighting, Subsurface Scattering, Terrain Shadows, Water Effects, Wetness Effects, Hair Specular, Terrain Helper, and Terrain Variation.

Copilot AI review requested due to automatic review settings June 12, 2025 08:33
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 12, 2025

Walkthrough

A new virtual inline method, GetFeatureModLink(), was added to multiple feature structs within the src/Features directory. This method returns a URL string linking to each feature's respective Nexus Mods page, complementing existing metadata methods without modifying any logic or control flow. Additionally, a static helper method MakeNexusModURL was introduced in Feature.h to generate these URLs from mod IDs. The .gitignore file was updated to ignore .DS_Store files.

Changes

File(s) Change Summary
src/Features/CloudShadows.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() to CloudShadows.
src/Features/GrassCollision.h, src/Features/GrassLighting.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() to GrassCollision and GrassLighting.
src/Features/LightLimitFix.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() override to LightLimitFix.
src/Features/ScreenSpaceGI.h, src/Features/ScreenSpaceShadows.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() (override in ScreenSpaceShadows) to ScreenSpaceGI and ScreenSpaceShadows.
src/Features/Skylighting.h, src/Features/SubsurfaceScattering.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() to Skylighting and SubsurfaceScattering.
src/Features/TerrainShadows.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() override to TerrainShadows.
src/Features/WaterEffects.h, src/Features/WetnessEffects.h Added private static constexpr MOD_ID and virtual inline std::string GetFeatureModLink() to WaterEffects and WetnessEffects.
src/Features/HairSpecular.h Added private static constexpr MOD_ID and modified GetFeatureModLink() to use MakeNexusModURL(MOD_ID) instead of hardcoded URL.
src/Features/TerrainHelper.h Added private static constexpr MOD_ID and modified GetFeatureModLink() to use MakeNexusModURL(MOD_ID) instead of hardcoded URL.
src/Features/TerrainVariation.h Added private static constexpr MOD_ID and modified GetFeatureModLink() to use MakeNexusModURL(MOD_ID) instead of hardcoded URL.
src/Feature.h Added static constexpr NEXUS_BASE_URL and protected static helper method MakeNexusModURL(std::string_view modId) in Feature struct.
.gitignore Added .DS_Store to ignore list and a comment line for folder view configuration files.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant FeatureStruct

    Client->>FeatureStruct: GetFeatureModLink()
    FeatureStruct-->>Client: Return Nexus Mods URL as string
Loading

Suggested reviewers

  • alandtse

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c2d5c76 and 92c74a4.

📒 Files selected for processing (2)
  • src/Feature.h (2 hunks)
  • src/Features/TerrainHelper.h (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/Feature.h
  • src/Features/TerrainHelper.h
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds Nexus Mods links for each feature by introducing a GetFeatureModLink override in multiple feature headers.

  • Introduces GetFeatureModLink() in each Feature subclass to return its Nexus Mods URL.
  • Applies the same pattern across 12 feature header files.
  • No interface or shared utility updates to support the new method.

Reviewed Changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Features/WetnessEffects.h Added GetFeatureModLink returning the mod URL.
src/Features/WaterEffects.h Added GetFeatureModLink returning the mod URL.
src/Features/TerrainShadows.h Added GetFeatureModLink returning the mod URL.
src/Features/SubsurfaceScattering.h Added GetFeatureModLink returning the mod URL.
src/Features/Skylighting.h Added GetFeatureModLink returning the mod URL.
src/Features/ScreenSpaceShadows.h Added GetFeatureModLink returning the mod URL.
src/Features/ScreenSpaceGI.h Added GetFeatureModLink returning the mod URL.
src/Features/LightLimitFix.h Added GetFeatureModLink returning the mod URL.
src/Features/GrassLighting.h Added GetFeatureModLink returning the mod URL.
src/Features/GrassCollision.h Added GetFeatureModLink returning the mod URL.
src/Features/CloudShadows.h Added GetFeatureModLink returning the mod URL.
Comments suppressed due to low confidence (2)

src/Features/WetnessEffects.h:14

  • [nitpick] There are no tests verifying the returned URLs for the new GetFeatureModLink methods; consider adding unit tests to ensure each feature returns the correct mod link.
virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }

src/Features/WetnessEffects.h:14

  • Ensure that the base Feature class declares GetFeatureModLink as a virtual method or provides a default implementation; without this, the overrides will cause compilation errors.
virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }

Comment thread src/Features/WetnessEffects.h Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 12, 2025

✅ A pre-release build is available for this PR:
Download

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (9)
src/Features/LightLimitFix.h (1)

16-16: Consistent addition of Nexus Mods link via GetFeatureModLink().

The new inline override cleanly surfaces the mod’s URL, matching the pattern in other feature structs.
Optional nit: since this always returns the same literal, you could return a std::string_view or const char* (and mark it noexcept) to avoid allocating a new std::string on each call.

src/Features/ScreenSpaceShadows.h (1)

13-13: Consider using std::string_view for the static mod link

GetFeatureModLink() returns a fixed C-string; switching its signature to return std::string_view (as you do in GetShaderDefineName()) avoids heap allocations and improves performance:

- virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/93209"; }
+ virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/93209"; }
src/Features/WetnessEffects.h (1)

14-14: Suggest returning a string_view for static literals
Since the URL is a compile-time constant, consider changing the return type to std::string_view to avoid heap allocations on each call. You would also need to #include <string_view>.

- virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }
+ virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }
src/Features/GrassCollision.h (1)

13-13: Return std::string_view (or const char*) to avoid repeated heap allocations

GetFeatureModLink() always returns the same compile-time constant. Returning it as a fresh std::string on every call forces an unnecessary allocation/copy each time the metadata is queried.
Prefer a non-owning view to the literal (consistent with GetShaderDefineName() on L14):

-	virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/87816"; }
+	virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/87816"; }

(Adjust the base Feature interface accordingly if it currently returns std::string.)

src/Features/TerrainShadows.h (1)

15-15: Consider avoiding per-call string allocations

GetFeatureModLink() returns a fresh std::string each invocation, triggering a heap allocation every time the method is called.
If the URL is immutable (it usually is) and this accessor is queried repeatedly (e.g. for every settings draw), switching to a non-allocating representation will save a small but completely avoidable cost.

Two low-impact options:

-virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/135817"; }
+virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/135817"; }

or, if the base signature locks you to std::string:

static constexpr std::string_view kModUrl = "https://www.nexusmods.com/skyrimspecialedition/mods/135817";
virtual inline std::string GetFeatureModLink() override { return std::string(kModUrl); }  // avoids re-parsing the literal

Either approach removes the repeat allocation while keeping the public contract intact.
(If the base class can be updated, prefer the first variant.)

src/Features/CloudShadows.h (1)

21-21: Optimize feature mod link storage
Currently GetFeatureModLink() returns a std::string by value for a fixed literal, incurring an allocation on each call. Since the URL is a compile-time constant and this method is inline, consider:

  • Returning std::string_view instead of std::string.
  • Defining the URL as static constexpr std::string_view kModLink and returning that.
  • Removing the redundant inline specifier (methods defined in-class are implicitly inline).

If you choose to stay with std::string, at least move the literal into a static constant to avoid repeated allocations.

src/Features/GrassLighting.h (1)

13-13: Add Nexus Mods link method
The new GetFeatureModLink() correctly returns the feature’s Nexus Mods URL and aligns with other metadata methods.
Consider returning a std::string_view or using a static constexpr string to eliminate the cost of allocating a new std::string on every call, if the base interface permits.

src/Features/WaterEffects.h (1)

18-18: Add unit tests for the new method.
There are currently no tests covering GetFeatureModLink(). Please add a unit test to assert the returned URL matches the expected string.

Do you want me to draft a simple test case for this?

src/Features/ScreenSpaceGI.h (1)

15-15: Use std::string_view for static URLs & centralize mod‐link overrides
Since this method always returns a fixed literal, changing the return type to std::string_view would avoid unnecessary heap allocations (see how GetShaderDefineName() uses std::string_view). Also, you’re overriding the same method in every feature struct—consider moving the mapping of feature identifiers to Nexus URLs into the base Feature class (or a shared registry) to DRY up these overrides.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e8a10ec and 3944853.

📒 Files selected for processing (11)
  • src/Features/CloudShadows.h (1 hunks)
  • src/Features/GrassCollision.h (1 hunks)
  • src/Features/GrassLighting.h (1 hunks)
  • src/Features/LightLimitFix.h (1 hunks)
  • src/Features/ScreenSpaceGI.h (1 hunks)
  • src/Features/ScreenSpaceShadows.h (1 hunks)
  • src/Features/Skylighting.h (1 hunks)
  • src/Features/SubsurfaceScattering.h (1 hunks)
  • src/Features/TerrainShadows.h (1 hunks)
  • src/Features/WaterEffects.h (1 hunks)
  • src/Features/WetnessEffects.h (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (4)
src/Features/WetnessEffects.h (1)

14-14: Add GetFeatureModLink to expose Nexus Mods URL
The new inline override cleanly augments the feature metadata with a direct link to the corresponding Nexus Mods page, consistent with other feature structs.

src/Features/Skylighting.h (1)

15-15: Add GetFeatureModLink() override
This inline virtual method cleanly exposes the Nexus Mods URL for the Skylighting feature, in line with other feature structs.

src/Features/SubsurfaceScattering.h (1)

64-64: Consistent metadata accessor—looks good.

The added GetFeatureModLink() matches the pattern of other metadata methods and provides the correct Nexus Mods URL. Please verify that the mod ID (114114) is accurate and that the base Feature interface includes a corresponding pure‐virtual declaration.

src/Features/WaterEffects.h (1)

18-18: Verify the Nexus Mods URL for accuracy.
Ensure that the hard-coded link
"https://www.nexusmods.com/skyrimspecialedition/mods/112762"
actually points to the intended Water Effects mod.

@alandtse
Copy link
Copy Markdown
Collaborator Author

Actionable comments posted: 0

🧹 Nitpick comments (9)

src/Features/LightLimitFix.h (1)> 16-16: Consistent addition of Nexus Mods link via GetFeatureModLink().

The new inline override cleanly surfaces the mod’s URL, matching the pattern in other feature structs.
Optional nit: since this always returns the same literal, you could return a std::string_view or const char* (and mark it noexcept) to avoid allocating a new std::string on each call.

src/Features/ScreenSpaceShadows.h (1)> 13-13: Consider using std::string_view for the static mod link

GetFeatureModLink() returns a fixed C-string; switching its signature to return std::string_view (as you do in GetShaderDefineName()) avoids heap allocations and improves performance:

- virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/93209"; }
+ virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/93209"; }

src/Features/WetnessEffects.h (1)> 14-14: Suggest returning a string_view for static literals

Since the URL is a compile-time constant, consider changing the return type to std::string_view to avoid heap allocations on each call. You would also need to #include <string_view>.

- virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }
+ virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/112739"; }

src/Features/GrassCollision.h (1)> 13-13: Return std::string_view (or const char*) to avoid repeated heap allocations

GetFeatureModLink() always returns the same compile-time constant. Returning it as a fresh std::string on every call forces an unnecessary allocation/copy each time the metadata is queried.
Prefer a non-owning view to the literal (consistent with GetShaderDefineName() on L14):

-	virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/87816"; }
+	virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/87816"; }

(Adjust the base Feature interface accordingly if it currently returns std::string.)

src/Features/TerrainShadows.h (1)> 15-15: Consider avoiding per-call string allocations

GetFeatureModLink() returns a fresh std::string each invocation, triggering a heap allocation every time the method is called.
If the URL is immutable (it usually is) and this accessor is queried repeatedly (e.g. for every settings draw), switching to a non-allocating representation will save a small but completely avoidable cost.
Two low-impact options:

-virtual inline std::string GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/135817"; }
+virtual inline std::string_view GetFeatureModLink() override { return "https://www.nexusmods.com/skyrimspecialedition/mods/135817"; }

or, if the base signature locks you to std::string:

static constexpr std::string_view kModUrl = "https://www.nexusmods.com/skyrimspecialedition/mods/135817";
virtual inline std::string GetFeatureModLink() override { return std::string(kModUrl); }  // avoids re-parsing the literal

Either approach removes the repeat allocation while keeping the public contract intact.
(If the base class can be updated, prefer the first variant.)

src/Features/CloudShadows.h (1)> 21-21: Optimize feature mod link storage

Currently GetFeatureModLink() returns a std::string by value for a fixed literal, incurring an allocation on each call. Since the URL is a compile-time constant and this method is inline, consider:

  • Returning std::string_view instead of std::string.
  • Defining the URL as static constexpr std::string_view kModLink and returning that.
  • Removing the redundant inline specifier (methods defined in-class are implicitly inline).

If you choose to stay with std::string, at least move the literal into a static constant to avoid repeated allocations.

src/Features/GrassLighting.h (1)> 13-13: Add Nexus Mods link method

The new GetFeatureModLink() correctly returns the feature’s Nexus Mods URL and aligns with other metadata methods.
Consider returning a std::string_view or using a static constexpr string to eliminate the cost of allocating a new std::string on every call, if the base interface permits.

src/Features/WaterEffects.h (1)> 18-18: Add unit tests for the new method.

There are currently no tests covering GetFeatureModLink(). Please add a unit test to assert the returned URL matches the expected string.
Do you want me to draft a simple test case for this?

src/Features/ScreenSpaceGI.h (1)> 15-15: Use std::string_view for static URLs & centralize mod‐link overrides

Since this method always returns a fixed literal, changing the return type to std::string_view would avoid unnecessary heap allocations (see how GetShaderDefineName() uses std::string_view). Also, you’re overriding the same method in every feature struct—consider moving the mapping of feature identifiers to Nexus URLs into the base Feature class (or a shared registry) to DRY up these overrides.

📜 Review details

@coderabbitai please draft a PR that switches to string_view and also addresses this comment's suggestion to have a static base string for the common parts of the nexus link.

@alandtse alandtse force-pushed the links branch 2 times, most recently from f591628 to e70bd7c Compare June 13, 2025 04:57
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
src/Feature.h (3)

7-9: Prefer constexpr std::string_view for the base URL, but include <string_view> explicitly

Nice centralisation. However, NEXUS_BASE_URL relies on <string_view> yet the header only includes "Menu.h".
Explicitly including <string_view> keeps this header self-contained and avoids relying on transitive includes.

+#include <string_view>
 #include "Menu.h"

20-24: Avoid repeated allocations inside MakeNexusModURL

std::string(NEXUS_BASE_URL) + std::string(modId) creates two temporaries and an extra allocation each invocation.
Given every feature calls this once per UI draw, consider one of:

  1. Store the full URL as a static constexpr std::string_view in each feature and simply return it; or
  2. Reserve once:
-static std::string MakeNexusModURL(std::string_view modId)
-{
-    return std::string(NEXUS_BASE_URL) + std::string(modId);
-}
+static std::string MakeNexusModURL(std::string_view modId)
+{
+    std::string url;
+    url.reserve(NEXUS_BASE_URL.size() + modId.size());
+    url.append(NEXUS_BASE_URL);
+    url.append(modId);
+    return url;
+}

If allocations are negligible for your workload, feel free to ignore.


20-24: Mark helper as noexcept

The function cannot throw unless allocation fails; marking it noexcept clarifies intent and may allow minor optimisations.

-static std::string MakeNexusModURL(std::string_view modId)
+static std::string MakeNexusModURL(std::string_view modId) noexcept
src/Features/TerrainHelper.h (1)

46-46: Unnecessary trailing semicolon after function body

virtual std::string GetFeatureModLink() override { ... }; compiles, but the semicolon is a stray null statement.
Removing it reduces visual noise and matches prevailing style across other features.

-    virtual std::string GetFeatureModLink() override { return MakeNexusModURL(MOD_ID); };
+    virtual std::string GetFeatureModLink() override { return MakeNexusModURL(MOD_ID); }
src/Features/HairSpecular.h (1)

31-31: Consider returning a cached string_view to avoid per-call allocation

Every call to GetFeatureModLink() triggers a new allocation via MakeNexusModURL.
If this method is polled frequently (e.g., every frame for tooltips), cache once:

-virtual inline std::string GetFeatureModLink() override { return MakeNexusModURL(MOD_ID); }
+virtual inline std::string GetFeatureModLink() override
+{
+    static const std::string url = MakeNexusModURL(MOD_ID);
+    return url;
+}

Minor, but aligns with earlier performance feedback.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3944853 and c2d5c76.

📒 Files selected for processing (16)
  • .gitignore (1 hunks)
  • src/Feature.h (2 hunks)
  • src/Features/CloudShadows.h (2 hunks)
  • src/Features/GrassCollision.h (2 hunks)
  • src/Features/GrassLighting.h (2 hunks)
  • src/Features/HairSpecular.h (2 hunks)
  • src/Features/LightLimitFix.h (2 hunks)
  • src/Features/ScreenSpaceGI.h (2 hunks)
  • src/Features/ScreenSpaceShadows.h (2 hunks)
  • src/Features/Skylighting.h (2 hunks)
  • src/Features/SubsurfaceScattering.h (2 hunks)
  • src/Features/TerrainHelper.h (2 hunks)
  • src/Features/TerrainShadows.h (2 hunks)
  • src/Features/TerrainVariation.h (2 hunks)
  • src/Features/WaterEffects.h (2 hunks)
  • src/Features/WetnessEffects.h (2 hunks)
✅ Files skipped from review due to trivial changes (2)
  • .gitignore
  • src/Features/TerrainVariation.h
🚧 Files skipped from review as they are similar to previous changes (11)
  • src/Features/ScreenSpaceShadows.h
  • src/Features/LightLimitFix.h
  • src/Features/SubsurfaceScattering.h
  • src/Features/WaterEffects.h
  • src/Features/Skylighting.h
  • src/Features/ScreenSpaceGI.h
  • src/Features/WetnessEffects.h
  • src/Features/TerrainShadows.h
  • src/Features/GrassLighting.h
  • src/Features/GrassCollision.h
  • src/Features/CloudShadows.h
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/Features/TerrainHelper.h (13)
src/Features/GrassCollision.h (1)
  • MakeNexusModURL (17-17)
src/Features/CloudShadows.h (1)
  • MakeNexusModURL (25-25)
src/Features/SubsurfaceScattering.h (1)
  • MakeNexusModURL (67-67)
src/Features/GrassLighting.h (1)
  • MakeNexusModURL (17-17)
src/Features/HairSpecular.h (1)
  • MakeNexusModURL (31-31)
src/Features/ScreenSpaceShadows.h (1)
  • MakeNexusModURL (17-17)
src/Features/TerrainVariation.h (1)
  • MakeNexusModURL (17-17)
src/Features/Skylighting.h (1)
  • MakeNexusModURL (19-19)
src/Features/ScreenSpaceGI.h (1)
  • MakeNexusModURL (19-19)
src/Features/TerrainShadows.h (1)
  • MakeNexusModURL (19-19)
src/Features/WaterEffects.h (1)
  • MakeNexusModURL (21-21)
src/Features/WetnessEffects.h (1)
  • MakeNexusModURL (17-17)
src/Features/LightLimitFix.h (1)
  • MakeNexusModURL (19-19)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (2)
src/Features/TerrainHelper.h (1)

5-7: Good move putting the Mod ID behind constexpr

Encapsulating the ID avoids magic literals and matches the new pattern.
No issues here.

src/Features/HairSpecular.h (1)

5-7: Consistent use of constexpr std::string_view for MOD_ID

Looks good and in line with other features.

alandtse added 2 commits June 12, 2025 22:49
Improves string concatenation efficiency by pre-allocating memory and using append operations instead of multiple string constructors.

Adds noexcept specification to indicate the method doesn't throw exceptions.
@alandtse alandtse merged commit 9885661 into community-shaders:dev Jun 13, 2025
7 checks passed
@alandtse alandtse deleted the links branch June 20, 2025 17:30
davo0411 pushed a commit to davo0411/skyrim-community-shaders that referenced this pull request Jun 21, 2025
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
alandtse added a commit to alandtse/open-shaders that referenced this pull request Jul 20, 2025
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants