Automatic conversion of the NetBSD pkgsrc CVS module, use with care
Find a file
nia 9a23f21a73 ogre: Update to 1.12.11
The main change is that it builds again.

# New and Noteworthy in OGRE 1.12

This is only a high level overview. For a detailed changes, see the git changelog.

## Core changes

### Component Media files

Previously all of our bundled Media files lived in the `Samples/Media` subdirectory - including the `RTShaderLib`.
However the latter is not a sample, but required to use the RTSS component.
Therefore, we now put media files that are required by a component into `Media/*` and install them independent of the Sample Media.
This allows you to merely reference these locations instead of having to copy them into your project.

Consequently, this allowed us to move various embedded resources to the filesystem for easier editing.

**ACTION REQUIRED** you must add the `Media/ShadowVolume` resource location to use the build-in algorithms.

### NEON intrinsics on all ARM platforms

We converted our SSE based OptimisedMath using SSE2NEON. While the gains are not as substantial as on x86, you can expect an speedup of about 30% for e.g. CPU skeletal animation.

### Automatic Plugin discovery for Windows Debug builds

Ogre now automatically append the `_d` suffix to plugin library names on windows.
Consequently it does not need a `plugins_d.cfg` any more. Therefore you can now use the same config files for release and debug with the same content.

### Separate UV skyboxes removed

Ogre no longer supports `cubic_texture .. separateUV` textures. Previously it was possible to create a "fake" cubic texture unit which would actually contain 6 individual 2d textures. These could be used to render skyboxes. Only skyboxes that is.
For everything else you would need real hardware cubic textures.
Ogre will ignore the `separateUV` part now, and create a real cubic texture anyway.
The advantage is that ogre renders the skybox with only one draw call.

**ACTION REQUIRED** If you use custom shaders on such materials, you will have to update them to cope with real cubic textures.

### RenderSystem - unified API for fixed-function and shaders

The `RenderSystem` API was modernized and streamlined for programmable pipeline usage. Consequently most of the legacy fixed function API calls were removed (e.g. `_setProjectionMatrix`, `_setSurfaceParams`).

Instead these parameters are now passed through the `GpuProgramParameters` structure to the fixed function unifying the API between fixed and programmable pipeline.

RenderSystems supporting `RSC_FIXED_FUNCTION`, now export the respective parameters through `getFixedFunctionParams`.
You can query and modify those and then apply them using `applyFixedFunctionParams`.

If you bypass the SceneManager and use the RenderSystem directly, e.g. `_setProjectionMatrix` becomes

```cpp
    auto params = rs->getFixedFunctionParams(TVC_NONE, FOG_NONE);
    params->setConstant(8, Matrix4()); // the "magic" 8 is defined in getFixedFunctionParams
    rs->applyFixedFunctionParams(params, GPV_GLOBAL);
```

### Improved Profiling

The instrumentation code inside Ogre was improved to be less costy compared to the measured code. At this we also improved the labels to be more readable (camera name vs. "_renderScene") - see [the updated Profiling tutorial](https://codedocs.xyz/OGRECave/ogre/profiler.html#profRead).

Additionally the Profiler class can now use [Remotery](https://github.com/Celtoys/Remotery) as its backend. Again see the tutorial for more details.

### Breaking non-API changes

These changes require unit testing on your side as compilation will succeed, but the rendering result may vary compared to 1.11.

* `fog_override` semantics changed: previously it would only affect fixed function fog and shader autoparams would still get the global scene fog. Now both autparams and fixed function settings are affected.

* `SubMesh::setMaterialName` now immediately queries the `MaterialManager` instead of merely storing the name. This means that if you do not load any `.material` files and do an import/ export cycle of a `.mesh`, the material names will be lost. This is a common use case for offline processing of mesh files. Register a `MeshSerializerListener` to create dummy materials in this case.

* `Ogre::any_cast` now throws a `std::bad_cast` exception instead of a `Ogre::InvalidParametersException` for compatibility with `std::any_cast`. Both derive from `std::exception`, in case you want to preserve legacy compatibility.

* The `OGRE_BUILD_*` defines moved to a separate `OgreComponents.h` header. As those were typically checked with `#ifdef`, these check will silently fail. Migrate to the `Ogre.h` header instead of including headers form OgreMain directly.

* compute shaders are no longer automatically dispatched when the according material is used during rendering. You now have to explicitly reference the respective material in a [*compute* compisitor pass](https://ogrecave.github.io/ogre/api/latest/_compositor-_scripts.html#Compositor-Passes).

## Samples

As a side-effect of the stable media files effort, the Sample media files were refactored as well.
Now all GL rendersystems share a common GLSL shader codebase - likewise the D3D rendersystems and the Cg plugin use the same Cg shaders (which is just HLSL9 really).

Additionally we took advantage of the RTSS improvements and replaced any custom depth shadow code by the unified RTSS solution.

## Bites

The `ApplicationContext` class was split into `ApplicationContextBase` and `ApplicationContextSDL`. This allows additional implementations (like Qt) and eases consumption in projects that do not use SDL.

## Real Time Shader System 3.0

The RTSS API was overhauled and is now more flexible and easy to use. You can now directly acquire shaders for an arbitrary Pass using `TargetRenderState` - without having to go through any Viewport Scheme juggling. This means that `TargetRenderState` can now replace any ad-hoc shader generator that you might have in place to leverage the Ogre maintained RTSS shader snippets.

The RTSS now defaults to Per-Pixel lighting, consequently making it the default for GL3+/ GLES2 and D3D11.

### Depth Shadowmap Support
The PSSM3 shadow stage now supports hardware PCF and automatically uses it if your shadow textures are compatible (i.e. of type `PF_DEPTH`).

Furthermore you can now use it generally for depth based textures by not calling `setSplitPoints` - it will use only the first depth shadow texture then.

### Merged Lighting calculations
The Fixed Function, Per-Pixel and Normal map sub-render states now all share the same shader code.

**ACTION REQUIRED** you must update your `RTShaderLib` for the 1.12 shaders.

## Terrain

To allow usage `PF_DEPTH` shadow textures, the "linear" depth code was dropped from the `SM2Profile`.
Where previously you were expected to write an interpolated value of `(gl_Position.z - depthRange.x) * depthRange.w` in the fragment shader, it is now enough to just write `gl_FragCoord.z`.
This enables early-z optimizations by the hardware and generally eases the workflow.
Refer to the Terrain Sample for the updated depth shadow scene setup.

Furthermore it is now possible to load legacy 1.7 style Terrains (aka "terrain.cfg") using `TerrainGroup::loadLegacyTerrain`.

**ACTION REQUIRED** you have to add the `Media/Terrain` resource location to use the SM2Profile Shader Generator.

## D3D9 RenderSystem

Direct3D9 feature level 9.1 is now required.

## GL/ GLES2/ GL3+

`#include` directives in GLSL shaders are now resolved by OGRE. The lookup is performed by filename using the Resource System. (based on the existing code of the Cg plugin)

Monolithic shaders are used instead of separable shader objects (SSO) by default again due to better performance and better driver support.
2021-03-01 12:12:14 +00:00
archivers py-zstandard: updated to 0.15.2 2021-02-28 18:35:32 +00:00
audio py-music21: update to 6.7.1 2021-02-24 23:19:15 +00:00
benchmarks Add hyperfine 2021-01-29 09:16:20 +00:00
biology biology/Makefile: + igv 2021-02-24 14:05:25 +00:00
bootstrap In the process of looking at PR#55952, we discovered something that 2021-02-15 12:56:53 +00:00
cad (cad/kicad) Correction to Version and regen distinfo, thanks bouyer@. 2021-03-01 09:25:32 +00:00
chat bitlbee-facebook: Update to 1.2.2 2021-02-16 09:53:37 +00:00
comms asterisk14 was deleted 2021-02-28 22:57:01 +00:00
converters libkkc: Convert to use GitHub framework 2021-02-27 19:17:56 +00:00
cross mingw-w64-i686-binutils: Update to 2.36 2021-01-28 12:43:28 +00:00
databases www/ruby-rails61: update to 6.1.3 2021-02-28 15:42:39 +00:00
devel ogre: Update to 1.12.11 2021-03-01 12:12:14 +00:00
distfiles
doc doc: Updated graphics/ivtools to 2.0.4a1 2021-03-01 09:49:18 +00:00
editors update to version 8.2.2557. 2021-02-28 00:23:37 +00:00
emulators unicorn: set GITHUB_PROJECT so downloads work for all users of this file 2021-02-28 13:25:47 +00:00
filesystems py-fs: updated to 2.4.12 2021-01-24 20:27:06 +00:00
finance (finance/hs-Decimal) insist on ghc-8.*, fix build 2021-02-28 14:08:54 +00:00
fonts fonts/Makefile: + unifraktur-ttf. 2021-02-22 20:49:36 +00:00
games flightgear: Fix build. 2021-03-01 09:00:33 +00:00
geography geography/gama: Update to 2.14 2021-03-01 01:19:45 +00:00
graphics ivtools: update to 2.0.4a1 2021-03-01 09:48:40 +00:00
ham ham/xlog: Improve workarounds for upstream portability issues 2021-02-16 20:22:52 +00:00
inputmethod (inputmethod/fcitx5) Fix build, with work around patches for gcc7 bug 2021-03-01 11:13:20 +00:00
lang lang: remove rakudo-star 2021-03-01 08:45:42 +00:00
licenses licenses: Add odbl-v1-license for ODC Open Database License (ODbL) 2021-02-20 21:59:31 +00:00
mail www/ruby-rails61: update to 6.1.3 2021-02-28 15:42:39 +00:00
math math/ruby-spreadsheet: update to 1.2.8 2021-02-28 15:38:14 +00:00
mbone *: bump PKGREVISION for perl-5.32. 2020-08-31 18:06:29 +00:00
meta-pkgs meta-pkgs/bulk-large: update to 20200228 2021-02-28 17:12:55 +00:00
misc misc/catpoint: import catpoint-0.2 2021-02-27 21:09:40 +00:00
mk genreadme: Reduce size of generated README.all 2021-02-24 08:16:32 +00:00
multimedia mkvtoolnix: updated to 54.0.0 2021-02-27 09:57:57 +00:00
net (net/hs-resolv) insist on ghc-8.*, fix build 2021-02-28 14:27:03 +00:00
news neix: add an upstream patch URL 2021-02-08 02:56:19 +00:00
packages
parallel Revbump packages with a runtime Python dep but no version prefix. 2020-12-04 20:44:57 +00:00
pkgtools texlive2pkg: update to 1.9 2021-02-20 05:08:37 +00:00
print tex-latex-bin-doc: commit distinfo for previous update. 2021-02-27 23:43:40 +00:00
regress regress/infra-unittests: use single quotes for string literals 2021-01-04 21:11:43 +00:00
security security/pleaser: update to 0.3.24 2021-02-28 22:15:55 +00:00
shells bash: update to 5.1.4. 2021-01-04 10:39:23 +00:00
sysutils sysutils/broot: add update warning 2021-02-27 16:22:50 +00:00
templates genreadme: Reduce size of generated README.all 2021-02-24 08:16:32 +00:00
textproc www/ruby-rails61: update to 6.1.3 2021-02-28 15:42:39 +00:00
time p5-DateTime-TimeZone: update to 2.47 2021-02-24 23:32:31 +00:00
wm modular-xorg-xquartz, libAppleWM: Use predefined OSX_SDK_PATH 2021-02-25 12:30:58 +00:00
www py-channels: updated to 3.0.3 2021-03-01 09:05:03 +00:00
x11 x11/xst: expand DESC as requested by @wiz via e-mail 2021-02-26 11:24:33 +00:00
_NetBSD-pkgdb _NetBSD-pkgdb: Use $@ insted of $* 2020-12-29 17:56:14 +00:00
Makefile Makefile: fix outdated documentation 2020-02-12 15:04:51 +00:00
pkglocate
README.md *: fix a bunch of typos in README and various documentation files. 2020-12-12 10:42:47 +00:00

pkgsrc

pkgsrc is a framework for building software for a variety of UNIX-like systems.

It produces binary packages, which can be managed with tools such as pkgin. pkgsrc is highly configurable, supporting building packages for an arbitrary installation prefix (the default is /usr/pkg), allowing multiple branches to coexist on one machine, a build options framework, and a compiler transformation framework, among other advanced features. Unprivileged use and installation is also supported.

pkgsrc is the default package manager for NetBSD and SmartOS. It's also supported as a first-class option in OmniOS CE and Oasis Linux.

Bootstrapping

To use pkgsrc on operating systems other than NetBSD, you first need to bootstrap:

cd pkgsrc/bootstrap
./bootstrap

Note that this is only for the most simple case, using pkgsrc's defaults.

Please consult bootstrap/README and bootstrap/README.OS for detailed information about bootstrapping.

Building packages

cd pkgsrc/category/package-name
$PREFIX/bin/bmake install

Where $PREFIX is where you've chosen to install packages (typically /usr/pkg)

On NetBSD, bmake is simply the built-in make tool.

To build packages in bulk, tools such as pkgtools/pbulk and pkgtools/pkg_comp can be used.

Troubleshooting

Latest sources

To fetch the main CVS repository:

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc

To work in the Git mirror, which is updated every few hours from CVS:

git clone https://github.com/NetBSD/pkgsrc.git